【问题标题】:Change java version (Mac)更改 java 版本 (Mac)
【发布时间】:2013-09-27 08:08:30
【问题描述】:

我的电脑上有 2 个 java 版本:

/Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

1.6.0 设置为默认值。如何让我的 java 程序运行 1.7?

尝试添加:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home

到我的 .zshrc 文件。但这似乎只会改变我的终端 java 命令的路径。

还尝试像这样更改 HOME 符号链接:

cd /Library/Java
mv Home Home-1.6
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home/ Home

这根本没有效果。

还尝试了java转换器软件: http://www.guigarage.com/2013/02/change-java-version-on-mac-os/ 但没有效果。

知道如何通过单击它们来启动 1.7 版本的 .app 和 .jar 文件等 java 程序吗?

【问题讨论】:

  • 如果你输入 java -version 终端会说什么?
  • 关闭为题外话? “......除非它们直接涉及主要用于编程的工具。” jdk 几乎专门用于编程。

标签: java macos java-home


【解决方案1】:

我相信 OS X(至少 10.8)使用以下路径:

  • JRE:/System/Library/Frameworks/JavaVM.framework/Versions/Current
  • JDK:/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

这些是符号链接,您可以将其更新为指向您的 1.7 安装。

您可以很容易地验证这一点:

a) 运行 which java 以检查正在执行的 java 可执行文件。理论上应该是/usr/bin/java

b) 在您的 java 可执行文件上运行 ls -la,它应该会告诉您它指向的位置(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java 在我的机器上)。

我认为这应该解决您的.jar 执行问题。如果您的 Java 应用程序包装在 .app 中,我相信它会更复杂一点:如果内存服务,使用的 java 版本将取决于 .app 使用的 JavaApplicationStub

【讨论】:

  • 我认为最后一部分是问题的实际答案:“使用的 java 版本将取决于 .app 使用的 JavaApplicationStub。”。猜猜我在使用 Jar Bundle 时做错了(不支持 1.7....)
  • 在这种情况下,this 可能会受到关注。
【解决方案2】:
$ edit ~/.profile

#Java 1.8
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
export PATH=${PATH}:${JAVA_HOME}


$ java -version

java version "1.8.0_20-ea"

步骤如下:

http://ukitech.blogspot.com/2014/04/switching-version-of-java-on-mac.html

【讨论】:

  • 尝试添加链接中的一些详细步骤...未来的用户可能无法访问它。
【解决方案3】:

您始终可以在 Mac 或 Linux 上添加 into your profile。只需创建 if 不存在 ~/.profile 文件并在此行:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home

这应该工作 .zshrc 以及 .bash_profile 仅在终端窗口打开和profile when your graphical environment starts up 时加载。

【讨论】: