如何修复java.lang.UnsupportedClassVersionError:不支持的主版本。次版本
我正在尝试使用编辑、运行、编译等一体化工具 我已安装,并且已将path变量设置到如何修复java.lang.UnsupportedClassVersionError:不支持的主版本。次版本,java,jvm,incompatibility,unsupported-class-version,Java,Jvm,Incompatibility,Unsupported Class Version,我正在尝试使用编辑、运行、编译等一体化工具 我已安装,并且已将path变量设置到../bin目录 在记事本++中运行“Hello world”时,我收到以下消息: java.lang.UnsupportedClassVersionError:test\u hello\u world: 不支持的major.minor版本51.0 位于java.lang.ClassLoader.defineClass1(本机方法) 位于java.lang.ClassLoader.DefineClassSecond(
../bin
目录
在记事本++中运行“Hello world”时,我收到以下消息:
java.lang.UnsupportedClassVersionError:test\u hello\u world:
不支持的major.minor版本51.0
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.DefineClassSecond(未知源)
.........................................
我认为这里的问题在于版本;Java的某些版本可能是旧的或太新的
PATH
变量之间有什么区别别担心,我已经解决了 它实际上很简单——您需要用相同的版本安装两个JRE/JDK JRE 6->JDK 6 JRE 7->JDK 7
等等。别担心,我已经解决了 它实际上很简单——您需要用相同的版本安装两个JRE/JDK JRE 6->JDK 6 JRE 7->JDK 7
以此类推。
java.lang.UnsupportedClassVersionError发生的原因是编译时JDK较高,运行时JDK较低。java.lang.UnsupportedClassVersionError发生的原因是编译时JDK较高,运行时JDK较低。显示的版本号描述了类文件与之兼容的JRE
报告的主要数字如下:
JavaSE17=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,
JavaSE9=53,
Java SE 8=52,
JavaSE7=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-target1.4helloworld.java
对于较新版本的Java编译器,您可能会收到一条关于未设置引导类路径的警告。有关此错误的更多信息,请参阅博客文章。显示的版本号描述了类文件兼容的JRE版本
报告的主要数字如下:
JavaSE17=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,
JavaSE9=53,
Java SE 8=52,
JavaSE7=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-target1.4helloworld.java
对于较新版本的Java编译器,您可能会收到一条关于未设置引导类路径的警告。有关此错误的详细信息,请参阅博客文章。此错误意味着您试图加载一个Java“类”文件,该文件是用比您安装的Java版本更新的Java编译的
例如,您的.class
文件可能是为JDK 7编译的,您正在尝试使用JDK 6运行它
因此,解决方案是:
- 升级Java运行时或
- 如果有源代码,请使用本地Java编译器(如果有)重新编译该类
javac FileName.java
对于开发人员来说,如果其他开发人员签入.class文件,并且他们拥有比您更新的java版本,则可能会发生这种情况 此错误意味着您正试图加载一个Java“类”文件,该文件是用比您安装的版本更新的Java编译的
例如,您的.class
文件可能是为JDK 7编译的,您正在尝试使用JDK 6运行它
因此,解决方案是:
- 升级Java运行时或
- 如果有源代码,请使用本地Java编译器(如果有)重新编译该类
javac FileName.java
对于开发人员来说,如果其他开发人员签入.class文件,并且他们拥有比您更新的java版本,则可能会发生这种情况 在Eclipse中,我只需进入菜单命令窗口->首选项->Java->编译器,然后将“编译器符合性级别”设置为1.6。在Eclipse中,我只需进入菜单命令窗口->首选项->Java->编译器,然后将“编译器符合性级别”设置为1.6。您可以用Java 7编译一些JAR库,您只有Java6作为Java运行时。一些新库可能会出现这种情况。您可以使用Java 7编译一些JAR库,而Java运行时只有Java 6。这可能发生在一些新的库中。在Eclipse的菜单窗口->首选项->Java->编译器中,同时检查“配置特定于项目的设置”
如果在相同的Java版本中仍然存在错误:请尝试手动删除项目的生成文件夹。然后重新启动Eclipse。在Eclipse的菜单窗口->首选项->Java->编译器中,同时选中“配置特定于项目的设置”
如果在相同的Java版本中仍然存在错误:请尝试手动删除项目的生成文件夹。然后重新启动Eclipse。正如一些人在别处回答的那样,Java程序正在运行
javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java
javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java
Unsupported major.minor version 51.0
<target name="build-java" depends="prepare-build">
<echo message="Compiling java files"/>
<javac ....
target="1.5"...
</javac>
</target>
vi ~/.profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home
source ~/.profile
java -version
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
.....
J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
javac -version
java -version
jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
dpkg -l "openjdk*" | grep ^i
update-java-alternatives -l
update-alternatives --config java
apt-cache search ^openjdk
apt-get install openjdk-7-jre
yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home