如何修复 java.lang.UnsupportedClassVersionError:不支持的 major.minor 版本

2022-04-07 22:46:39

我正在尝试使用 Notepad++ 作为我的多合一工具编辑、运行、编译等。

.../bin 目录。

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

java.lang.UnsupportedClassVersionError: test_hello_world :
 不支持的 major.minor 版本 51.0
    在 java.lang.ClassLoader.defineClass1(本机方法)
    在 java.lang.ClassLoader.defineClassCond(未知来源)
       .........................................................

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

  1. 我该如何解决?
  2. 我是否应该安装 JDK,并将我的路径变量设置为 JDK 而不是 JRE?
  3. 变量有什么区别?

- ERJAN

Source
es
回答


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

    报告的主要数字是:

    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 警告,用于设置较旧的源而不引导类路径