首页 文章

Java编译错误:Mac

提问于
浏览
4

我在Eclipse上安装了1.7 JDK的Eclipse出现了编译问题:

class file has wrong version 51.0, should be 49.0

所以,因为这看起来像一个javac版本问题我删除了所有java版本 . 安装了1.7_51,安装了Apple提供的1.6版本,以便Eclipse运行,更改了sym链接,因此1.7是默认值 . 和以前一样的问题,同样的项目不会编译,尽管其他人做了,

下一步,将问题删除到裸骨,即从等式中删除ant等 - 使用的Test.java文件没有方法,只有System.out.println()的main . cd到包含源文件的目录并运行编译器指定javac的完整路径,检查JAVA_HOME未设置:

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/javac Test.java -verbose -extdirs . -endorseddirs . -cp . -bootclasspath /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar -version

输出:

javac 1.7.0_51 [解析已启动Test.java] [解析完成67ms] [源文件的搜索路径:[ . ]] [类文件的搜索路径:[/ Library / Java / JavaVirtualMachines / jdk1.7.0_51.jdk /目录/ Home / jre / lib / rt.jar, . ]] [loading /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar(java/lang/Object.class )] Test.java:11:无法访问java.lang.Object坏类文件:/ Library / Java / JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar(java/lang/Object .class)类文件有错误的版本51.0,应该是49.0请删除或确保它出现在类路径的正确子目录中 . 公共类测试{^ [总计336ms] 1错误

Flumoxed .

有任何想法吗 ?

在相关的说明中,我似乎无法让javac接受1.5 / 5以上的-target选项:

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/javac Test.java -verbose -extdirs . -endorseddirs . -cp . -bootclasspath /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar -version -target 1.7

结果是:

javac 1.7.0_51 javac:无效的目标版本:1.7

1 回答

  • 8

    经过大量讨论修复后发布 - 所有这些都没有成功 - 我使用dtrace来查看命令运行时javac正在访问哪些文件 .

    在终端(你需要安装XCode)

    sudo dtrace -s /dev/stdin
    
    syscall::open*:entry
    
    {
    
       printf("%s %s", execname, copyinstr(arg0));
    
    }
    
    <Ctrl-D>
    

    我在另一个终端实例中运行命令行,我发现它隐藏在javac的文件访问活动中 - which is pretty extensive considering the command line options give you the impression that you are restricting where it looks for files - 我发现

    open:entry javac /Users/me/Library/Java/Extensions/tools.jar

    我没有意识到我有一个本地扩展文件夹.....

    删除它的内容修复了问题 .

    所以,这是由旧 jar 引起的版本不匹配 - 正如其他人发现的那样 - 我的案例中的问题是找到它们

相关问题