【问题标题】:how to fix this error: class file has wrong version 52.0, should be 49.0如何解决此错误:类文件的版本错误 52.0,应该是 49.0
【发布时间】:2015-05-06 13:52:37
【问题描述】:

我真的在为此苦苦挣扎。我一直无法将 Intellij 配置为使用 Javac,无法运行 javadoc。我似乎无法让我的 java 运行时环境稳定并在 Mac OSX 上高效工作。

我创建了最基本的示例,它是一个 hello world 程序,但它仍然从命令行出错。我读到的关于这个错误的所有内容都告诉我“升级编译器”。但我真的不确定问题出在哪里,javac 和 java 都在运行 1.8(现在,在我尝试升级系统 JVM 之后)。

我在调用 javac 时明确设置了路径,检查了版本等。一切都告诉我它是 1.8。

谁能解释一下如何解决这个问题? (无需将我的系统恢复为 1.5 SDK)。

这是基本 hello world 应用程序的输出:

$JAVA_HOME/bin/javac Main.java
Main.java:3: cannot access java.lang.Object
bad class file: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar(java/lang/Object.class)
class file has wrong version 52.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
public class Main {
       ^
1 error
localhost:mycompany$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
localhost:mycompany$

javac 版本的输出:

javac -version
javac 1.8.0_45
javac: no source files
Usage: javac <options> <source files>

java 版本的输出:

java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

【问题讨论】:

  • 你的“javac 输出”实际上是来自$JAVA_HOME/bin/javac吗?
  • 是的,它是一样的。 $JAVA_HOME/bin/javac -version javac 1.8.0_45 javac: no source files Usage: javac &lt;options&gt; &lt;source files&gt;

标签: java macos


【解决方案1】:

错误消息表示您尝试使用 Java 5 VM 加载 Java 8 类。

由于未知原因,$JAVA_HOME/bin/javac 正在使用 JDK 8 Java 运行时 (.../rt.jar),但编译器本身加载了 Java 5 VM。

我的下一步是确保 $JAVA_HOME/bin/javac 实际上是它应该是的(而不是一个会做一些奇怪事情的脚本)。我还会检查环境 (CLASSPATH) 和 -Xbootclasspath 等选项。尝试set | grep -i javaset | grep -i path 查找可疑变量。

如果似乎没有任何效果,请尝试重新安装 Java 8 SDK。

【讨论】:

  • 谢谢,我想我已经修好了——当我在 Verbose 模式下运行它时,Java/Extensions 文件夹中有一些有趣的东西,这个条目在类路径中 /Library/Java/Extensions/bcprov-jdk15-143.jar——从名字来看,我会说是问题所在,我不记得那个库是什么,但我直接从扩展中删除了所有包,现在它正在工作......
  • 这是在 Java 5 中加密工作所需的 Bouncy Castle。这个 JAR 应该不是问题。我的猜测是那里有另一个包含 Java 运行时的 JAR。
【解决方案2】:

在尝试使用 ant 构建 Arduino IDE 时,我遇到了相同版本的完全相同的问题。解决方法是从 /Library/Java/Extensions/ 中删除旧版本的 tools.jar - 只是想澄清一下遇到相同问题的其他人。

【讨论】:

  • 刚刚在 Mojave/ 上遇到了同样的问题,但剩下的唯一文件是 /System/Library/Java/Extensions/MRJToolkit.jar,它看起来像是随 Mojave 一起安装的。从逻辑上讲,这不应该引起问题,其他所有内容都来自正确的目录。哦,这个系统目录即使使用 sudo 也无法更改。
猜你喜欢
  • 2015-03-26
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 2014-03-31
  • 1970-01-01
相关资源
最近更新 更多