java - Java 中不受支持的 major.minor 52.0 异常

标签 java exception

给出这样的异常:

java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main : Unsupported major.minor version 52.0

我知道这是因为 JDK 和 JRE 不兼容。但是,当我输入时:

which java

输出是:

/usr/java/jdk1.6.0_24/bin/java

输入时:

which javac

输出是:

/usr/java/jdk1.6.0_24/bin/javac

版本兼容。那有什么问题呢?

最佳答案

问题通常是由以下序列引起的:

  • 代码使用新的 JDK 编译,“目标”设置为当前版本的 Java。

  • 尝试使用较旧的 JDK 或 JRE 运行代码。

在这种情况下,次要版本 52 意味着某些内容已使用 Java 8 JDK 编译,并以 Java 8 作为目标平台,并且您正尝试在较旧的 JRE/JDK 上运行它。

您也可以从其他地方获得为 Java 8 编译的 JAR 文件。

要解决您的问题,您需要弄清楚:

  • 哪个类文件或哪些文件有版本号问题(异常信息应该告诉你第一个...),

  • 类文件来自哪里(来自 JAR 文件?来自文件系统?),然后

  • 虽然您以为是用 Java 6 编译的,但它怎么会用 Java 8 编译。

无法加载的类使用Java 8(或更高版本)编译器编译的,这是不争的事实。您需要找出原因,然后使用旧版 JDK 重新编译它,使用 Java 8 运行它。

关于java - Java 中不受支持的 major.minor 52.0 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26529428/

相关文章:

Ruby 枚举器 - 为什么异常结束?

java - 每次实例化子类时都会创建父类(super class)对象吗?

java - 从 Java 中的字符串中删除特定字符

java - 使用 ProGuard 后异常跟踪不显示私有(private)方法的行号

python - 如何区分两个 numpy FloatingPointError 异常?

java - 当只允许 SQLException 时,如何抛出 EOFException?

ruby-on-rails - 如何在 Rails 中为我的整个应用捕获 ArgumentError?

java - 新行字符\n 在 Android 的 TextView 中的阿拉伯文本中不起作用

java - 该字符串中的哪些字符会抛出错误 invalid character constant?

java - Ant taskdef - 需要类路径和 -lib 参数?