Java 6不支持的major.minor版本51.0


78

我最近卸载了Java 8,以使用Java 6,因为我希望我的代码/创建内容可以被更多的人使用,而不仅仅是Java 8上的人。当我这样做时,mvn - version它会返回:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:401)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:254)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    at org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Launcher.java:144)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:266)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

当我这样做时java -version

java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

Java似乎一切正常,但是当我尝试运行可执行JAR时也会发生这种情况。我通过手动执行java -jar(jar名称)解决了它


1
您正在使用哪个版本的Maven?
约翰·阿门特

JAVA_HOME / bin / java -version是否还会打印Java版本“ 1.6.0_45”?
细菌

只需使用Java 8并以1.6兼容性进行编译

Java 6很老,一段时间以来不受支持。我建议不要使用它。如果要增加兼容性,则可以使用Java 7。
蜘蛛鲍里斯(Boris)

Answers:


104

根据maven网站的说法,支持Java 6的最新版本是3.2.5,并且3.3和更高版本使用Java7。我的直觉是您正在使用Maven 3.3或更高版本,并且应该升级到Java 7(并设置正确的源代码)。 / pom中的/ target属性)或降级Maven。


1
正是我的问题。我最近安装了Mars 2版本的Eclipse以获得64位,并且新安装使用了其嵌入式Maven版本而不是我的版本。我尝试了两种方法:第一种方法是将项目的JRE版本更改为1.8,第二种方法是让1.6 JRE并将maven版本从嵌入式更改为我的本地安装,并且两个选项均起作用
Facepalmed

我们正在使用JDE 1.8,并且正好看到了这个问题。
DrLou

13

版本号(51.0)表示您正在尝试运行针对Java 7编译的类。您将需要针对Java 6重新编译它们。

但是请注意,某些功能可能不再与非常古老的Java 6兼容,并且不再(公开)受Oracle支持。


6
您好笑...这里的大多数政府仍使用Java 6,实际上它们几乎只是从Java 4到达那里...从4变成6了!(您的意见来自去年!:)
VeenarM '16



2

我遇到了同样的问题。我使用jdk 1.8和maven 3.3.9导出JAVA_HOME之后,没有看到此错误。导出JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_121.jdk / Contents / Home /


我有相同的JRE和mvn,但此方法不起作用,出现了相同的错误
user2568374

0

我遇到了同样的问题,并通过在我的Ubuntu Machine(16.04)中将JAVA_HOME变量与Java的更新版本一起添加来解决。如果使用的是“ Apache Maven 3.3.9”,则需要使用Java7或更高版本升级JAVA_HOME

步骤要做

1-sudo vim / etc /环境

2-JAVA_HOME = JAVA安装目录(MyCase- / opt / dev / jdk1.7.0_45 /)

3次运行echo $ JAVA_HOME将给出JAVA_HOME设置值

4-现在mvn -version将提供所需的输出

Apache Maven 3.3.9

Maven home: /usr/share/maven

Java version: 1.7.0_45, vendor: Oracle Corporation

Java home: /opt/dev/jdk1.7.0_45/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "linux", version: "4.4.0-36-generic", arch: "amd64", family: "unix"

0

在JAVA_HOME和路径中添加jdk8或更高版本。

添加JAVA_HOME添加C:\ ProgramFiles \ Java \ jdk1.8.0_201

对于路径=>

添加%MAVEN_HOME%\ bin

最后重启电脑。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.