如何在Mac OS X 10.7.5上恢复到Java 1.6

时间:2012-11-27 23:08:16

标签: java macos

我有1.6安装程序。我用过它。它不会改变我的Java安装,也不会说有旧版本,但它确实完成了安装。

我一直在使用符号链接,但无论我做什么,都要运行

java -version
终端中的

始终会产生

Daves-MacBook-Pro:core-server dave$ java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

我的应用程序适用于GAE,它根本不使用Java 1.7。因此,我无法使用1.7编译我的代码!我必须使用1.6,但我没有找到一种方法来删除1.7或以其他方式强制构建/编译在1.6上发生。

最后一点,我在命令行上运行构建工具,因此在Eclipse中更改项目的设置似乎不会有所帮助。

3 个答案:

答案 0 :(得分:69)

javajavac等命令行工具对JAVA_HOME环境变量的值很敏感,如果此变量指向1.6 JDK,则使用1.6。工具/usr/libexec/java_home是您的朋友。运行

/usr/libexec/java_home

将为您系统上最新的JDK打印出适当的JAVA_HOME值。这将是Java 7,但您可以使用-v标志应用约束,例如

/usr/libexec/java_home -v '1.6*'

将为您系统上最佳的 1.6 JDK返回JAVA_HOME值。您可以使用此值来设置JAVA_HOME

export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`

作为特定终端会话的一次性,或者通过将上述行添加到主目录中的.bash_profile文件,永久保留所有未来的终端会话。


$ export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`
$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
$ export JAVA_HOME=`/usr/libexec/java_home -v '1.7*'`

$ java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

答案 1 :(得分:1)

如果您需要编写要在先前版本的Java上运行的代码,则可以更改编译标志。这可能是你所需要的全部而且

例如

javac -source 1.6 -target 1.6 MyClass.java

源arg声明源是用该版本的Java编写的,因此List<String> strings = new ArrayList<>();将是编译错误。 Target告诉编译器编译针对指定版本的JVM的字节代码。虽然我认为1.7完全向后兼容1.5和1.6。

答案 2 :(得分:0)

我遇到了类似的问题。安装JDK7后,我的一些应用程序不再有效。我需要恢复到JDK6,我做了不同的事情。我注意到在我的/System/Library/Frameworks/JavaVM.framework/Versions/中,它显示了以下内容:

lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 Oct 25 18:06 A
lrwxr-xr-x  1 root  wheel    1 Oct 25 17:01 Current -> A
lrwxr-xr-x  1 root  wheel   59 Nov 20 21:40 CurrentJDK -> /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/

所以我删除了符号链接CurrentJDK

 sudo rm CurrentJDK

并重新创建指向JDK6的符号链接,该链接仍在我的Mac上

sudo ln -s  /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/ CurrentJDK

这对我来说很有把戏

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)