Java 6 不支持 major.minor 版本 51.0

Java 6 Unsupported major.minor version 51.0

我最近卸载了 Java 8,以使用 Java 6,因为我希望我的 code/creations 能被更多人使用,而不仅仅是 Java 8 上的人。我做 mvn - version 它 returns:

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[=12=]0(URLClassLoader.java:58)
    at java.net.URLClassLoader.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 name)

来绕过它

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

但是请注意,某些功能可能不再与 Java 6 兼容,后者非常旧,Oracle 不再(公开)支持。

根据 maven website,支持 Java 6 的最后一个版本是 3.2.5,3.3 及更高版本使用 Java 7。我的直觉是你正在使用 Maven 3.3 或更高版本,应该升级到 Java 7(并在您的 pom 中设置适当的 source/target 属性)或降级 maven。

我也遇到了类似的问题。我可以通过在 windows 的环境变量中设置 JAVA_HOME 来解决这个问题。在这种情况下,在批处理文件中设置 JAVA_HOME 不起作用。

我遇到了同样的问题,通过在我的 Ubuntu 机器 (16.04) 中添加 java 更新版本的 JAVA_HOME 变量来解决。 如果您正在使用 "Apache Maven 3.3.9" 您需要将 JAVA_HOME 升级为 java7 或更多

执行此操作的步骤

1-sudo vim /etc/environment

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"

问题是因为你没有设置 JDK 版本 properly.You 应该使用 jdk 7 作为主要编号 51。像这样:

JAVA_HOME=/usr/java/jdk1.7.0_79

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

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

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

对于路径 =>

添加 %MAVEN_HOME%\bin

最后重启你的电脑。

正如 John Ament 所说,在 Java 中只能使用 maven 版本 3.2.5 或更低版本。否则,如果你想让应用程序(在本例中为 JAR)兼容 Java6用maven,可以用Java8,但是在pom.xml文件里设置字段java.version或target为1.6。

如果您想创建 Spring 与 Java 6 兼容的 fat jar,您可以将其添加到您的 pom.xml:

<properties>
    <java.version>1.6</java.version>
</properties>

至于spring fat jar app,你需要将tomcat设置为tomcat-juli:7.0.59或者排除整个tomcat,否则会报错。