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:\e\java\jdk1.6.0_45\bin\javac.exe Test.java
E:\>javap.exe -v Test.class
...
class Test
  minor version: 0
  major version: 50
  flags: ACC_SUPER
...

E:\>D:\e\java\jdk1.7.0_79\bin\javac.exe Test.java
E:\>javap -v Test.class
...
class Test
  minor version: 0
  major version: 51
  flags: ACC_SUPER
...

E:\>D:\e\java\jdk1.8.0_131\bin\javac.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM