Java Preferences won't start
Anthony Petrov
anthony.petrov at oracle.com
Fri May 17 07:47:09 PDT 2013
On 05/17/2013 06:36 PM, David DeHaven wrote:
>
>>>> Hello,
>>>>
>>>> My ls -l /Library/Java/JavaVirtualMachines/ looks like this:
>>>>
>>>> total 0
>>>> drwxr-xr-x 3 root wheel 102 Mar 28 2012 1.6.0_31-b04-413.jdk
>>>> drwxr-xr-x 3 root wheel 102 Aug 24 2012 jdk1.7.0_06.jdk
>>>> drwxr-xr-x 3 root wheel 102 Sep 18 2012 jdk1.7.0_10.jdk
>>>> drwxr-xr-x 3 root wheel 102 May 17 15:51 jdk1.8.0.jdk
>>>>
>>>> All the JDKs are usable when I run commands specifying their full path names. Also, the "default" jdk is the 7u10 one, so that running 'java -version' in the command line will say "1.7.0_10". The 1.8 is b90 installed just now.
>>>>
>>>> However, when I'm trying to start Java Preferences in order to select the default JDK for the command-line use, I get a small dialog box with an error saying:
>>>>
>>>> Cannot launch "Java Preferences"
>>>> No compatible version of Java 1.5+ is available.
>
> The old /Applications/Utilities/Java Preferences is no longer useful.
>
>
>>>> After I click Quit, the console output is as follows:
>>>>
>>>> [JavaAppLauncher] Requested [1.5+], launching in [(null)] instead.
>>>> [JavaAppLauncher Error] unable to find a version of Java to launch
>>>>
>>>> I tried searching this on the Internet but didn't find anything useful.
>>>>
>>>> I don't even want to run this GUI tool actually. Is there a way to switch the default JDK from command line?
>>>
>>> Yes.
>>>
>>> /usr/libexec/java_home
>>>
>>> See the man pages for java_home at http://www.unix.com/man-page/all/1/java_home/
>>
>> This tool returns the default value for JAVA_HOME, and in my case it returns the path to the 7u10 JDK. But the java_home can't change the default value. Where does this tool get it from and how do I change it?
>
> There isn't any mechanism to set the order. When you request a specific major version, java_home will give you the latest version it finds. IOW, if you call /usr/libexec/java_home -v 1.7 it would return /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk. Without args it should return the latest major version which is jdk1.8.0.jdk. You'll have to use JAVA_HOME or explicit paths to pick a particular version.
Indeed, there's JAVA_HOME set in my environment. However, even if I
unset this variable, /usr/libexec/java_home still returns the path to
7u10 even though I have the 1.8 installed. This is strange. (I haven't
restarted my Mac after installing JDK8 though, perhaps this might help).
> I thought someone had a shell script to use the output of java_home to build a list of JDKs to choose from, then set JAVA_HOME from that... maybe that was just wishful thinking, it doesn't seem like it'd be too difficult to write.
In my .bash_profile I just have the following:
export JAVA_HOME=`/usr/libexec/java_home`
--
best regards,
Anthony
>
> -DrD-
>
More information about the macosx-port-dev
mailing list