我无法理解 Mac OSX 上的多个 java 版本(实际路径与链接)。通常在 Windows 中,如果我的机器上安装了多个版本,我可以选择我想要的版本的路径并使用它。但在 MAC OS X 中,我知道有一个叫做链接的东西被指向 CurrentJDK,如果我想使用不同的版本,我需要更改指向 CurrentJdk 的链接,对吗?但令我困惑的是,正如您在下面看到的,我的所有版本都指向同一个 CurrentJDK,这意味着所有版本都指向当前版本?我原以为其中只有一个会指向 CurrentJDK,我可以将其更改为我需要的任何一个,但这里的情况并非如此。我需要知道的是如何找到每个版本的 bin(Commands) 文件夹路径,以便我可以使用它指向 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或安装,您将有不同的路径。
在 Mac OS X Mavericks 上,我找到的路径如下:
1)内置JRE默认:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
2)从Apple下载的JDK:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/
3)从Oracle下载的JDK:
/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
很可能你只安装了一个jdk,因此所有的软链接都指向同一个jdk。但是,如果您确实安装了多个 jdks,则需要选择与 /Application/Utilities 中的“Java Preferences”应用程序一起使用哪一个。
软链接是使用终端中的
ln -s
命令创建的。
只需运行以下命令:
$ 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 运行时提供 java.util.prefs API,该 API 由标准 Mac OS X 首选项 API 和目录支持。只需使用这个纯 Java API 即可读取应用程序的首选项并将其存储在 Mac OS X 属性列表文件的 ~/Library/Preferences 中。对于可能已经有自己的首选项格式的应用程序,这些首选项也应该存储在 ~/Library/Preferences 目录中。通过创建路径为 System.getProperty("user.home") + "/Library/Preferences/" + "com.example.your.Application" 的文件,可以从 Java 代码访问此目录。应该对所有用户具有全局首选项的应用程序可以驻留在 /Library/Preferences 中,但是非管理员用户无法写入该目录。
设置 $JAVA_HOME=$(/usr/libexec/java_home) 在你的 .bash_profile 中
或导出JAVA_HOME=$(/usr/libexec/java_home);
回显$JAVA_HOME
在 Mac Ventura 上, 从Oracle下载的JDK
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
我通过从这里下载正确的 JDK 解决了这个问题 - https://www.oracle.com/java/technologies/downloads/#java17 然后像这样设置我的路径“/Library/Java/JavaVirtualMachines/jdk- 17.jdk/Contents/Home”在 VSCode 设置下 - salesforcedx-vscode-apex.java.home
MacOS 版本:14.4