如何修复java.lang.不受支持的ClassVersionError:不受支持的主要.次要版本

我正在尝试使用记事本++作为我的一体化工具编辑,运行,编译等。

我已经安装了JRE,并且我已经将路径变量设置为目录。.../bin

当我在记事本++中运行我的“Hello world”时,我收到以下消息:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

我认为这里的问题是关于版本;某些版本的Java可能是旧的或太新的。

  1. 我该如何修复它?
  2. 我应该安装 JDK,并将路径变量设置为 JDK 而不是 JRE 吗?
  3. JRE 或 JDK 中的变量之间有什么区别?PATH

答案 1

显示的版本号描述了类文件与之兼容的 JRE 的版本。

报告的主要数字是:

Java SE 18 = 62,
Java SE 17 = 61,
Java SE 16 = 60, 
Java SE 15 = 59,
Java SE 14 = 58,
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

(来源:维基百科)

要解决实际问题,您应该尝试使用较新版本的 Java JRE 运行 Java 代码,或者向 Java 编译器指定目标参数,以指示编译器创建与早期 Java 版本兼容的代码。

例如,为了生成与 Java 1.4 兼容的类文件,请使用以下命令行:

javac -target 1.4 HelloWorld.java

使用较新版本的 Java 编译器,您可能会收到有关未设置引导类路径的警告。有关此错误的详细信息,请参阅博客文章新的 javac 警告,用于设置没有 bootclasspath 的旧源


答案 2

java.lang.UnsupportedClassVersionError发生这种情况的原因是编译时 JDK 较高,运行时 JDK 较低。


推荐