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

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

当我在Notepad++中运行“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的某些版本可能是旧的或太新的。

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


当前回答

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

报告的主要数字如下:

Java SE 19 = 63,
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编译器,您可能会收到关于未设置引导类路径的警告。有关此错误的更多信息,请参阅博客文章New-javac警告,该警告用于设置没有bootclasspath的旧源。

其他回答

单击项目中的“财产”。转到Java构建路径。单击“添加库”。单击JRE系统库上的下一步。如果默认情况下未选择,请选择所需的选项。单击“完成”。

你完了!

由于java9-target被--release替换。

在java11之前,--release的可用数字是6、7、8、9、10、11。你可以猜到未来的版本将是12、13,等等。

要为较旧的目标jvm进行编译,请使用javac-release7Tmp.java//这将生成.class文件,该文件可以在jvm>=7上运行,

然后,您可以通过以下方式检查目标版本:

javap-v Tmp|grep版本

在输出中,主版本标识目标jvm版本。

55->java 1154->java 1053->java 952->java 851->java 750->java 6

未来版本将删除更多旧版本:

从java 11开始,主要版本<=49(java版本<=5)不受支持。截至java 12和13,主要版本<=50(java版本<=6)不受支持。

您可以通过以下命令找到当前javac支持的目标版本:javac-help|grep发布

在Eclipse中,我只需进入菜单命令Window->Preferences->Java->Compiler,然后将“Compiler compliance level”设置为1.6。

许多答案都与IDE类似,如Eclipse。然而,这个问题与Notepad++的本地开发有关。

命名错误的核心原因是使用的Java运行时环境和使用的类库不匹配。以下描述的目标是在不进行任何额外安装的情况下进行编译。

1) 检查PATH变量中的定义。如果定义了:

C: \Program Files(x86)\Common Files\Oracle\Java\javapath

和/或

C: \ProgramData\Oracle\Java\javapath

这些路径链接到具有固定java版本的java/javac。您可以使用javac-version检查此文件夹中的版本。结果可能是:

java版本“1.8.0_231”

这意味着正在使用Java版本8。将此条目替换为%JAVA_HOME%\bin。如果JDK是手动安装的,请检查环境中是否设置了JAVA_HOME。如果没有,请在此处添加,例如:

JAVA_HOME=“C:\Program Files\JAVA\jdk1.7.0_80”

2) 我已经用gradle在命令行上构建了这个项目。在build.gradle中定义了:

android {
    buildToolsVersion "24.0.1"
    dependencies {
        compile 'com.android.support:design:23.0.1'
        compile 'com.android.support:support-v4:23.0.1'
        ...
    }
    ...
}

使用的构建工具dx文件比其他组件更新。因此,需要进行修改:

buildTools版本“23.0.1”

在Eclipse的菜单窗口->首选项->Java->编译器中,还选中“配置项目特定设置”。

如果您仍然存在相同Java版本的错误:请尝试手动删除项目的构建文件夹。然后重新启动Eclipse。