我最近卸载了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名称)
来解决它答案 0 :(得分:87)
根据maven website,支持Java 6的最后一个版本是3.2.5,3.3及更高版本使用Java 7.我的预感是您正在使用Maven 3.3或更高版本,并且应该升级到Java 7(并在你的pom中设置适当的源/目标属性)或降级maven。
答案 1 :(得分:10)
该版本号(51.0)表示您正在尝试运行为Java 7编译的类。您需要为Java 6重新编译它们。
但请注意,某些功能可能不再与Java 6兼容,后者非常陈旧,而且Oracle不再(公开)支持。
答案 2 :(得分:4)
我也面临类似的问题。我可以通过在Windows中的Environment变量中设置JAVA_HOME来解决这个问题。在这种情况下,在批处理文件中设置JAVA_HOME不起作用。
答案 3 :(得分:1)
我遇到了同样的问题。我使用jdk 1.8和maven 3.3.9 一旦我导出JAVA_HOME,我没有看到这个错误。 export JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_121.jdk / Contents / Home /
答案 4 :(得分:0)
我面临同样的问题,并通过在我的Ubuntu机器(16.04)中添加带有更新版本的Java的JAVA_HOME变量来解决。 如果你使用“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-now 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"
答案 5 :(得分:0)
问题是因为你没有正确设置JDK版本。你应该使用jdk 7作为主要编号51.像这样:
JAVA_HOME =的/ usr /爪哇/ jdk1.7.0_79
答案 6 :(得分:0)
在JAVA_HOME和路径中添加jdk8或更高版本。
添加JAVA_HOME 添加C:\ ProgramFiles \ Java \ jdk1.8.0_201
对于路径=>
添加%MAVEN_HOME%\ bin
最后重新启动您的PC。