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

我有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中更改项目的设置似乎不会有所帮助。

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) 

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

例如。

 javac -source 1.6 -target 1.6 MyClass.java 

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

我遇到了类似的问题。 安装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的符号链接,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)