在 OS X 中在 Java 7 和 8 之间切换

Jac*_*kie 25 java environment-variables macos

我已经安装了 Java-8。现在我想默认回到 Java-7,所以我输入...

/usr/libexec/java_home -v 1.7.0_40 --exec java -version
/usr/libexec/java_home -v 1.7.0_40 --exec javac -version
Run Code Online (Sandbox Code Playgroud)

但是我还是看...

java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)
Run Code Online (Sandbox Code Playgroud)

这确实有效...

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

但我想要一个更永久的解决方案。

有人看到我做错了什么吗?

小智 50

轻松切换版本

  1. 以任何顺序安装版本 1.6、1.7、1.8。 注意:我相信安装的最后一个决定了哪个将用于浏览器插件,我不会关心更改下面的那些。

  2. 然后,添加到您的~/.bashrcor~/.bash_profile或任何地方:

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通过验证更改 java -version

    $ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ java -version
    java version "1.6.0_65"
    Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
    Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
    
    $ setjdk 1.8
    $ java -version
    java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    
    Run Code Online (Sandbox Code Playgroud)

显然,更改仅适用于外壳的持续时间。但是您现在可以看到可以全局设置的位置。

  • 问题一:如果你已经有JDK8,JDK7会拒绝安装。它将您指向 oracle.com 上的 URL,以获取更多信息,该 URL 为您提供 404。当然,还有 [卸载说明](http://docs.oracle.com/javase/8/docs/technotes/guides/ install/mac_jdk.html#A1096903) for JDK8 根本不起作用,所以现在我基本上迷路了。 (2认同)

Pie*_*llo 9

您可以使用 jEnv ( http://www.jenv.be/ ),它是“一个命令行工具,可以帮助您忘记如何设置 JAVA_HOME 环境变量以在不同版本的 JDK 之间切换”(摘自项目主页)。

如果您熟悉 Ruby,JEnv 就像使用 RVM 或 rbenv。它可以帮助您处理安装在您机器上的多个不同 JDK,而无需编写您自己的脚本来从一个 JDK 切换到另一个。例如,您可以根据当前目录或配置文件更改当前的 java 版本。