OSX 10.9.2 上的 Java 1.7 作为 1.5 运行?

标签 java macos osx-mavericks

关于这个我很生气。 java -versionjavac -version 都报告相同的 1.7.0_45,但是当我尝试编译最简单的类时,出现类文件错误:

> cat A.java
public class A {}

> javac A.java
A.java:1: cannot access java.lang.Object
bad class file: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/rt.jar(java/lang/Object.class)
class file has wrong version 51.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
public class A {}
       ^
1 error

肯定没有安装 JDK 1.5。我认为甚至 不再有可以在 OSX 上运行的 1.5 JDK。

FWIW,这是包含“版本”和 stub 可执行文件的框架目录:

> ls -al /System/Library/Frameworks/JavaVM.framework/Versions/
total 64
drwxr-xr-x  11 root  wheel  374 28 Mar 09:03 .
drwxr-xr-x  12 root  wheel  408 11 Mar 07:52 ..
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.6.0 -> CurrentJDK
drwxr-xr-x   8 root  wheel  272 28 Mar 09:03 A
lrwxr-xr-x   1 root  wheel    1 29 Oct 12:54 Current -> A
lrwxr-xr-x   1 root  wheel    1 28 Mar 09:03 CurrentJDK -> A

我已经检查了通常的嫌疑人,没有 JAVA_HOME 或 CLASSPATH 环境变量,如果没有安装 1.5,这并不重要。如果我安装 JDK 8,我也会得到完全相同的行为。

有人知道是什么原因造成的吗?

最佳答案

好的,感谢这篇文章 ( Java compilation error: Mac ) 我找到了解决方案:

rm -rf ~/Library/Java/Extensions
sudo rm -rf /Library/Java/Extensions

关于OSX 10.9.2 上的 Java 1.7 作为 1.5 运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22700845/

相关文章:

OSX Markdown 预览 PDF 上的 RStudio 出现 Pandoc 错误 43

linux - Mac OS X 10.9,安装 cmake 时无法在此系统上找到合适的 C 编译器

java - 如何让我的程序执行随机方法?

java - Quicksort - 排序数组较慢?

java - 解码 base64 XML 会截掉最后一部分

c++ - 在 Mavericks 上使用 CUDA 编译 OpenCV 2.4.9

android - 如何获取小牛的MD5指纹

java - Java/OOP 编程中传递参数、好的和坏的实践

c - 如何检测内存泄漏?

macos - 我的堆栈程序的第一个变量是什么?