• org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0


    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)

    顺藤摸瓜,查看Eclipse 使用的 maven版本 (Window - Preferences - Maven - Installations)

    发现用的是内置版本3.3.9

    查看官网 http://maven.apache.org/download.cgi 

    发现这个版本最低要求JDK 1.7

    继续查看自己的项目使用的jre版本是1.5

     调 查 结 果 

    构建此项目时,用的是1.5 ,而运行maven 3.3.9 需要至少1.7 

    尝试调整项目为1.6 

    依旧是这个错误

    直到——

    调整为1.7 ,构建成功 ,确认为就是此问题。

    [INFO] BUILD SUCCESS

     解 决 方 案 

    第一种:

    将项目JRE 版本升至1.7及以上(可以通过Maven Compiler插件)

    第二种:

    降低Maven版本至3.2 (不用内置版,使用外部版本,如下图)

     补充  

    javap.exe

    javap -v 可以输出 class文件的 minor version 和 major version 信息

    简单示例:

    新建 Test.java

    class Test{}

    分别用 jdk1.6 ,jdk1.7 , jdk1.8 编译和分解

    E:>D:ejavajdk1.6.0_45injavac.exe Test.java
    E:>javap.exe -v Test.class
    ...
    class Test
      minor version: 0
      major version: 50
      flags: ACC_SUPER
    ...
    
    E:>D:ejavajdk1.7.0_79injavac.exe Test.java
    E:>javap -v Test.class
    ...
    class Test
      minor version: 0
      major version: 51
      flags: ACC_SUPER
    ...
    
    E:>D:ejavajdk1.8.0_131injavac.exe Test.java
    E:>javap -v Test.class
    ...
    class Test
      minor version: 0
      major version: 52
      flags: ACC_SUPER
    ...

    回过头来看之前的错误

    org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0

    当时使用的maven 版本是Eclipse 内置版 3.3.9

    从官网下载将其下载,找到  下的  ,找出一个class文件使用javap 查看version信息,如下:

    至此可知这句异常信息的含义:当前的class 文件需要至少jdk 1.7 以上(51,52),而你的当前的jdk不支持我的class

  • 相关阅读:
    ListenerExecutionFailedException: Listener threw exception
    SpringCloud网关无法加载权限及IP黑名单白名单
    IDEA引入jar但无法导入class
    net.sf.jsqlparser.statement.select.PlainSelect.getGroupBy()Lnet/sf/jsqlparse
    mysql索引
    selenium
    Zuul的容错与回退与Zuul的高可用
    fastjson json转linkedhashmap为null
    微信H5支付签名校验错误
    追踪线程
  • 原文地址:https://www.cnblogs.com/zno2/p/5897590.html
Copyright © 2020-2023  润新知