Mac OS X 10.6.7 Java Path当前JDK令人困惑

我无法理解(实际pathvs链接)在我的Mac OSX上的多个Java版本。 通常在Windows中,如果我的机器上安装了多个版本,我可以把我想要的版本的path,并使用它。 但是在MAC OS XI中,有一些被称为CurrentJDK的链接,如果我想使用不同的版本,则需要将链接改为CurrentJdk。 但是令我困惑的是,正如你在下面看到的,我所有的版本都指向相同的CurrentJDK,这意味着所有版本都指向当前版本? 我期待他们中只有一个会指向CurrentJDK,我可以把它改成我所需要的任何一个,这里就不是这样了。 所有我需要知道的是如何find每个版本的bin(Commands)文件夹path,以便我可以使用它指向CurrentJDK? 另外告诉我如何改变CurrentJDK的链接。

$ java -version java version "1.6.0_24" Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326) Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode) $ pwd /System/Library/Frameworks/JavaVM.framework/Versions $ ls -l lrwxr-xr-x 1 root wheel 5 Mar 20 11:12 1.3 -> 1.3.1 drwxr-xr-x 3 root wheel 102 Dec 2 2009 1.3.1 lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.4 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.4.2 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.5 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.5.0 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.6 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.6.0 -> CurrentJDK drwxr-xr-x 10 root wheel 340 Mar 20 11:13 A lrwxr-xr-x 1 root wheel 1 Mar 20 11:12 Current -> A lrwxr-xr-x 1 root wheel 59 Mar 20 11:12 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 

很可能你只安装了一个jdk,因此所有的软链接指向相同的jdk。 但是,如果您安装了多个jdks,则需要select在/ Application / Utilities中的“Java Preferences”应用程序中使用哪一个。

软链接是通过terminal的ln -s命令创build的。

对于不同types的JDK或安装,您将拥有不同的path。

在Mac OS X Mavericks上,我find如下path:

1)内置JRE默认:

  /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 

2)从苹果下载的JDK:

  /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/ 

3)从Oracle下载的JDK:

 /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home 

只需运行以下命令:

 $ brew update $ brew install jenv $ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(jenv init -)"' >> ~/.bash_profile $ source ~/.bash_profile $ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/ oracle64-1.8.0.45 added 1.8.0.45 added 1.8 added $ jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home oracle64-1.7.0.79 added 1.7.0.79 added 1.7 added $ jenv versions * system (set by /Users/wanluwang/.jenv/version) 1.7 1.7.0.79 1.8 1.8.0.45 oracle64-1.7.0.79 oracle64-1.8.0.45 $ java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) $ jenv global oracle64-1.7.0.79 $ java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode) 

来自Apple技术问答Java问题:

用户首选项

在Mac OS X上,Java运行时提供了由标准的Mac OS X Preferences API和目录支持的java.util.prefs API。 只需使用这个纯Java API,就可以将应用程序的首选项读入并存储在Mac OS X属性列表文件的〜/ Library / Preferences中。 对于可能已经有自己的首选项格式的应用程序,这些首选项也应该存储在〜/ Library / Preferences目录中。 这个目录可以通过创build一个具有System.getProperty(“user.home”)+“/ Library / Preferences /”+“com.example.your.Application”path的文件从Java代码中获得。 在所有用户中应该具有全局首选项的应用程序可以驻留在/ Library / Preferences中,但是此目录不能由非pipe理员用户写入。

在你的.bash_profile中设置$ JAVA_HOME = $(/ usr / libexec / java_home)

或导出JAVA_HOME = $(/ usr / libexec / java_home);

echo $ JAVA_HOME