我正在尝试使用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变量有什么区别?
您的Java文件是用与您试图运行它的版本(较低运行时版本)不同的版本(较高的编译器版本)编译的。
基本的理解是,用较低版本编译的类预计将在以后的较高版本中运行。但相反的情况(用更高的编译器版本编译并尝试用更低的运行时版本运行)有时是不可能的。
因此,在尝试执行程序时,会显示此错误。不支持的major.minor版本x.x
Q: 我用Java7创建了一个应用程序,但当我的用户尝试运行它时,会出现不支持的major.minor版本51.0错误。什么这意味着什么?我该怎么办?A: 如果在Java7中使用javac编译应用程序,则生成的类文件将具有51.0版本号。的版本7之前的Java无法识别此数字,因此您的用户将在运行应用程序之前升级到Java 7。如果你不是使用任何Java 7 API,您都可以尝试使用javac-target1.6创建一个1.6兼容的类文件。如果您的应用程序是使用webstart部署的,您可以指定最小值需要版本。有关更多信息,请参阅Java Web Start上的文档这里是JNLP。一旦我们触发自动更新到适用于当前桌面上使用Java 6的最终用户的Java 7。这个这个时间表还没有确定,我们想给开发人员是时候先解决他们的代码和JDK7之间的任何问题了。
(来源:oracle.com)
许多答案都与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”