简体   繁体   English

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

[英]Java 6 Unsupported major.minor version 51.0

I recently uninstalled Java 8, to use Java 6 as I want my code/creations to be usable by more people than just those on Java 8. When I do mvn - version it returns:我最近卸载了 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)

When I do java -version :当我做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)

Everything seems fine with Java, but this also happens when I try to run executable JARs. Java 似乎一切都很好,但是当我尝试运行可执行 JAR 时也会发生这种情况。 I got around it by manually doing java -jar (jar name)我通过手动执行 java -jar (jar name) 来解决它

根据Maven 网站,支持 Java 6 的最新版本是 3.2.5,3.3 及更高版本使用 Java 7。我的预感是您使用的是 Maven 3.3 或更高版本,应该升级到 Java 7(并设置适当的源/target 属性在你的 pom) 或降级 maven。

That version number (51.0) indicates that you are trying to run classes compiled for Java 7. You will need to recompile them for Java 6.该版本号 (51.0) 表明您正在尝试运行为 Java 7 编译的类。您需要为 Java 6 重新编译它们。

Note, however, that some features may no longer be compatible with Java 6, which is very old, and no longer (publicly) supported by Oracle.但是请注意,某些功能可能不再与 Java 6 兼容,Java 6 非常旧,并且不再(公开)受 Oracle 支持。

i also faced similar issue.我也遇到了类似的问题。 I could able to solve this by setting JAVA_HOME in Environment variable in windows.我可以通过在 windows 的 Environment 变量中设置 JAVA_HOME 来解决这个问题。 Setting JAVA_HOME in batch file is not working in this case.在这种情况下,在批处理文件中设置 JAVA_HOME 不起作用。

The problem is because you haven't set JDK version properly.You should use jdk 7 for major number 51. Like this:问题是因为你没有正确设置JDK版本。你应该使用jdk 7作为主编号51。像这样:

JAVA_HOME=/usr/java/jdk1.7.0_79 JAVA_HOME=/usr/java/jdk1.7.0_79

I ran into the same problem.我遇到了同样的问题。 I use jdk 1.8 and maven 3.3.9 Once I export JAVA_HOME, I did not see this error.我使用 jdk 1.8 和 maven 3.3.9 导出 JAVA_HOME 后,我没有看到此错误。 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/导出 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/

I face the same problem and solved by adding the JAVA_HOME variable with updated version of java in my Ubuntu Machine(16.04).我遇到了同样的问题,并通过在我的 Ubuntu 机器(16.04)中添加具有更新版本的 java 的 JAVA_HOME 变量来解决。 if you are using "Apache Maven 3.3.9" You need to upgrade your JAVA_HOME with java7 or more如果您使用的是“Apache Maven 3.3.9”,您需要使用 java7 或更高版本升级您的 JAVA_HOME

Step to Do this执行此操作的步骤

1-sudo vim /etc/environment 1-sudo vim /etc/environment

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

3-Run echo $JAVA_HOME will give the JAVA_HOME set value 3-运行 echo $JAVA_HOME 将给出 JAVA_HOME 设置值

4-Now mvn -version will give the desired output 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"

add jdk8 or higher version at JAVA_HOME and path.在 JAVA_HOME 和路径添加 jdk8 或更高版本。

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

For Path =>对于路径 =>

add %MAVEN_HOME%\\bin添加 %MAVEN_HOME%\\bin

and finally restart your pc.最后重启你的电脑。

As said by John Ament that only maven version 3.2.5 or lower can be used in Java 6. Otherwise, if you want to make the app (in this case, JAR) compatible for Java 6 with maven, you can use Java 8, but set the field java.version or target to 1.6 in the pom.xml file.正如 John Ament 所说,Java 6 中只能使用 maven 版本 3.2.5 或更低版本。否则,如果您想让应用程序(在本例中为 JAR)与 maven 兼容 Java 6,则可以使用 Java 8,但在 pom.xml 文件中将字段java.version或 target 设置为 1.6。

If you wanted to create Spring fat jar which is compatible for Java 6, you can add this into your pom.xml:如果你想创建兼容 Java 6 的 Spring fat jar,你可以将它添加到你的 pom.xml 中:

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

As for spring fat jar app, you need to set the tomcat to tomcat-juli:7.0.59 or exclude the whole tomcat or it would raise errors.至于spring fat jar app,需要将tomcat设置为tomcat-juli:7.0.59或者排除整个tomcat,否则会报错。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM