【问题标题】:Can Java 7 and Java 8 co-exist on OSXJava 7 和 Java 8 可以在 OSX 上共存吗
【发布时间】:2014-01-25 07:28:24
【问题描述】:

我已安装 Java 8 用于开发目的,但现在我想再次使用 Java 7。

我该怎么做?

这似乎非常困难。

提前非常感谢。 (我尝试过使用guigarage,但不起作用)

【问题讨论】:

  • 视情况而定。通常,您应该只更改PATH 变量值。但是在开发方面,它取决于 IDE。您应该了解如何为您的 IDE 在 JDK 之间切换。
  • IntellIJ 根本无法启动,因为我的默认 Java 是 Java 8。
  • 尝试删除您当前的JRE 并重新安装JRE 7
  • 这就是我试图避免的 - 无论如何我如何删除我当前的 JRE? (我是 Mac 新手,有卸载程序吗?)谢谢
  • 我可以向你保证,我已经尝试过我的朋友 Google...正在寻找新朋友。

标签: java macos java-8


【解决方案1】:

从终端:export JAVA_HOME=`/usr/libexec/java_home -v 1.x`,其中 x 是 Java 版本。

我个人有一个 shell 函数可以为我做这件事:

use-java () {
    export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`
}

我只需要调用use-java 7use-java 8 来更改我当前shell 的Java 版本。

【讨论】:

  • 谢谢 - 但据我了解,这仅在您的程序在其启动脚本中使用 JAVA_HOME 变量时才有用。如果您正在启动 eclipse 或 Intellij 或仅使用机器上的默认 java 的东西怎么办。你能改变它吗?
  • JAVA_HOME 指定您将在终端中使用的 JDK 的路径(例如 javajavac)。它不会影响终端之外的 Java 版本。 IDE 有自己的 JDK 版本配置。在 IntelliJ 中,您需要打开项目首选项,转到 Project 面板,然后选择要使用的 JDK 版本。
  • 我说的是实际运行 IntelliJ(IDE 是一个 Java 程序)。
  • 抱歉。这就是我从你的问题中了解到的,但后来我犹豫并编辑了它。您需要在 /Applications/IntelliJ IDEA XXX.app/Contents/Info.plist 中编辑<key>JVMVersion</key><string>1.7*</string>
【解决方案2】:

使用jEnv

如果你的系统运行homebrew,你可以使用安装它

brew install jenv

(您可能需要先运行brew update 才能获得最新的食谱)

使用

将其添加到您的 bash 配置文件中
echo 'eval "$(jenv init -)"' >> ~/.bash_profile

启动一个新的 shell 以使对配置文件的更改生效。

然后你可以像这样添加jdk:

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

使用

列出可用版本
jenv versions

并使用

在环境之间切换
jenv global oracle64-1.8.0.25

还有更多自定义选项,例如按目录切换或临时在单个 shell 中切换,请参阅 http://www.jenv.be 了解这些。

jEnv 通过为 java 可执行文件创建 shim 脚本并将它们放在路径的前面来工作。一些 3rd 方 java 工具,如 ant 和 maven 依赖于 JAVA_HOME。要确保 JAVA_HOME 设置正确,请运行

jenv enable-plugin export

还有用于 maven 和 groovy 等工具的 jenv 插件。

【讨论】:

  • 如果使用 zsh,请使用以下命令将其添加到 .zshrc $ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc $ echo 'eval "$(jenv init -)"' >> ~/.zshrc
【解决方案3】:

这是关于如何在 OSX Mavericks 中从命令行切换 Java 版本的绝佳答案(source by Neeme Praks):

编辑您的~/.bash_profile 并添加以下内容:

function setjdk() {  
  if [ $# -ne 0 ]; then  
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'  
   if [ -n "${JAVA_HOME+x}" ]; then  
    removeFromPath $JAVA_HOME  
   fi  
   export JAVA_HOME=`/usr/libexec/java_home -v $@`  
   export PATH=$JAVA_HOME/bin:$PATH  
  fi  
  echo JAVA_HOME set to $JAVA_HOME  
  java -version  
 }  
 function removeFromPath() {  
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")  
 }

(将上述函数添加到您的.bash_profile

用法:

$ setjdk 1.7

【讨论】:

    【解决方案4】:

    安装后,打开 Java Preferences (Launchapad/Others):

    并将首选版本拖到列表顶部:

    【讨论】:

    • 在我的 Mac (10.9.1) 版本上,屏幕看起来略有不同。您从系统偏好设置中打开它。它只在列表中显示我当前的 Java (java 8) 版本。
    • 再次安装java 7,会被添加到列表中。
    • 我这样做了,现在它说平台是1.8,但产品是1.7?? java -version 说 1.8。你知道我如何从我的机器上完全删除 java 8 吗?
    • 你能贴一张Java首选项对话框的截图吗?
    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多