Java 6不支持major.minor版本51.0
我最近卸载了Java 8,使用Java 6,因为我希望我的代码/创build能够被更多的人使用,而不仅仅是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)
一切看起来都很好,但是当我尝试运行可执行JAR时也会发生这种情况。 我通过手动执行java -jar(jar名称)
据maven网站介绍 ,支持Java 6的最后一个版本是3.2.5,3.3以上的版本使用Java 7.我的预感是你使用Maven 3.3或更高版本,并且应该升级到Java 7(并且设置合适的源代码/你的POM中的目标属性)或降级Maven。
该版本号(51.0)表示您正在尝试运行为Java 7编译的类。您将需要重新编译它们以用于Java 6。
但是,请注意,某些function可能不再与Java 6兼容,而Java 6已经很老了,不再被Oracle公开支持。
我也面临类似的问题。 我可以通过在Windows环境variables中设置JAVA_HOME来解决这个问题。 在这种情况下,在batch file中设置JAVA_HOME不起作用。
我面临同样的问题,并通过在我的Ubuntu机器(16.04)中添加Java更新版本的JAVA_HOMEvariables来解决。 如果您使用的是“Apache Maven 3.3.9”,则需要使用java7或更高版本升级您的JAVA_HOME
步骤做到这一点
1-sudo vim / etc / environment
2-JAVA_HOME = JAVA安装目录(MyCase- / opt / dev / jdk1.7.0_45 /)
3-run echo $ JAVA_HOME会给出JAVA_HOME的设定值
4 – 现在mvn – 版本将提供所需的输出
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"
问题是因为你没有正确设置JDK版本。你应该使用jdk 7作为主号码51.像这样:
JAVA_HOME =的/ usr /爪哇/ jdk1.7.0_79
我遇到了同样的问题。 我使用jdk 1.8和maven 3.3.9一旦我导出JAVA_HOME,我没有看到这个错误。 导出JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_121.jdk /目录/ Home /