2011-05-26 45 views
50

我無法理解(實際路徑vs鏈接)在我的Mac OSX上的多個Java版本。通常在Windows系統中,如果我的機器上安裝了多個版本,我可以選擇我想要的版本並使用它。但在MAC OS X中,我承認存在一些被稱爲CurrentJDK的鏈接,如果我想使用不同的版本,我需要將鏈接改爲CurrentJdk。但是令我困惑的是,正如你可以在下面看到的,我所有的版本都指向相同的CurrentJDK,這意味着所有版本都指向當前版本?我期待他們中只有一個會指向CurrentJDK,我可以將它改變成我需要的任何一個,而這不是這裏的情況。我只需要知道如何找到每個版本的bin(Commands)文件夾路徑,以便我可以使用它指向CurrentJDK?另外告訴我如何改變CurrentJDK的鏈接。Mac OS X 10.6.7 Java Path當前JDK混淆

$ 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 
+0

運行'which java'來識別當前使用的是哪個版本。然後運行'/ usr/libexec/java_home -version <你喜歡的版本,比如1.8>'。它會打印出相關的java主文件夾。 – 2016-03-21 16:00:26

回答

14

大多數情況下你只能安裝一個jdk,因此所有的軟鏈接指向相同的jdk。如果您確實安裝了多個jdks,則需要選擇在/ Application/Utilities中的「Java首選項」應用程序中使用哪一個。

通過終端的ln -s命令創建軟鏈接。

+0

我明白你在說什麼。我查看了Java Preferences,看起來我只有一個版本的Java SE 6.所以如果我有多個版本,如果我只啓用其中一個版本,我的CurrentJDK會指向選定的版本?我實際上需要使用Java 5和1.6。由於我已經有6個版本了,是否還可以安裝版本5而不需要使用現有的6版本? – reddyvaribabu 2011-05-26 15:51:37

+0

是的,你可以同時擁有1.5和1.6。對於從命令行啓動的程序,您仍然可以將JAVA_HOME設置爲指向所需的jdk。 'Java Preferences'設置的jdk是系統使用的jdk,當通過點擊圖標打開程序時。 – 2011-05-26 15:55:50

+0

現在我看到我的JAVA_HOME是空的。這是否意味着設置JAVA_HOME不是必需的,只需在Java首選項實用程序中啓用足以將所需版本指向CurrentJDK? – reddyvaribabu 2011-05-26 15:57:15

57

對於不同類型的JDK或安裝,您將擁有不同的路徑。

在Mac OS X小牛隊,在路上,我發現如下:

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 
3

個只要運行以下命令:

$ 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) 
+0

Rajas-MacBook-Pro:/$ $ brew update -bash:$:command not found Rajas-MacBook-Pro:/ $ $ brew install jenv -bash:$:command not found Rajas-MacBook-Pro:/ $ $ echo'export PATH =「$ HOME/.jenv/bin:$ PATH」'>>〜/ .bash_profile -bash:$:command not found Rajas-MacBook-Pro:/ $ $ echo'eval「$(jenv init - )」 '>>〜/ .bash_profile -bash:$:command not found Rajas-MacBook-Pro:/ $ $ jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home -bash:add:找不到命令 – raja777m 2015-11-24 03:50:04

+0

@ raja777m〜不需要在終端的命令執行中包含前導'$'。離開這一切,所有應該工作。 – 2016-03-26 13:17:17

0

從蘋果技術問答&一個Java的問題:

用戶首

在Mac OS X,Java運行時提供的java.util.prefs API是由標準的Mac OS X Preferences API和目錄支持。只需使用這個純Java API,即可將應用程序的首選項讀入並存儲在Mac OS X屬性列表文件的〜/ Library/Preferences中。對於可能已經有自己的首選項格式的應用程序,這些首選項也應該存儲在〜/ Library/Preferences目錄中。這個目錄可以通過創建一個具有System.getProperty(「user.home」)+「/ Library/Preferences /」+「com.example.your.Application」路徑的文件從Java代碼中獲得。應該在所有用戶中擁有全局首選項的應用程序可以駐留在/ Library/Preferences中,但是該目錄不能由非管理員用戶寫入。

0

集$ JAVA_HOME = $(在/ usr/libexec目錄/ JAVA_HOME) 在你的.bash_profile

或出口JAVA_HOME = $(在/ usr/libexec目錄/ JAVA_HOME);

echo $ JAVA_HOME