2016-03-10 48 views
0

我的機器的Java 1.7安裝的Maven 3.2.5瞭解一臺機器上的Java 6項目:如何讓使用Java 7

> java -version 
java version "1.7.0_80" 
Java(TM) SE Runtime Environment (build 1.7.0_80-b15) 
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode) 

>javac -version 
javac 1.7.0_80 

我有一個Java 1.6的項目,我想運行,但是當我去打造這個項目,我得到:

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:637) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621) 
    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) 

我以前安裝的Maven 3.3.9,和我讀的地方的Maven 3.2.5是Maven的最後一個版本支持Java 6,所以我刪除的Maven 3.3.9和安裝Maven 3.2.5

>mvn -version 
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T09:29:23-08:00) 
Maven home: /usr/local/Cellar/maven/3.2.5 
Java version: 1.7.0_80, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.11.3", arch: "x86_64", family: "mac" 

但是,當我去建立這個1.6項目,我仍然得到相同的major.minor版本51異常拋出我?

任何想法這裏發生了什麼?任何幫助或支持將不勝感激,謝謝。

+0

https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html –

+1

錯誤消息是字節碼是Java 7.這意味着JVM你使用的是比Java 7更早的版本,而OS X最可能是Apple Java 6版本。我會建議重新安裝JDK。 –

+1

@ArunavSanyal你誤解了這個問題。 –

回答

0

以下爲我工作。

我運行Eclipse 4.5.1火星,Java EE的

Eclipse的>首選項>已安裝的JRE

移除/刪除的Java 1.6

Eclipse的>首選項>已安裝的JRE>執行環境

在Execution Environment窗格下,選擇JAVASE-1.6並在 下一個窗格中選中標記1.6 Java。重複同樣的步驟1.7(如果你有安裝 Java 7中,1.7下應該說「絕配」)

感謝托爾比約恩指着我在正確的方向

1

這怎麼能是1.6項目如果您使用JDK 1.7編譯它?您沒有使用Java 7中提供的新語言功能並不意味着您正在生產針對Java 6 VM的字節碼。

解決方案是安裝最新版本的Maven並像往常一樣構建項目。如果您希望鎖定之前的1.6個虛擬機,請在插件中將sourcetarget變量設置爲1.6

+0

是的,我正在使用該插件來確保我的項目是Java 6。但是我認爲您誤解了我的問題。我的項目已經是Java 6,這不是一個問題。閱讀Thorbjørn的評論,你會看到我的問題。但幸運的是我有一個解決方案。謝謝你的幫助! –

+0

似乎它是交叉編譯的一天,也檢查[這個問題/答案](http:// stackoverflow。com/questions/35913775/maven-java-version-configuration-ignored-by-eclipse-idea) –

+1

@arabian_albert我很高興你找到了一個解決方案。祝一切順利。 :-) –