2012-07-31 44 views
0

我的windows計算機有netbeans和JDK 7和JRE 7.我製作了一個程序,並且該jar文件不能在只運行Java 6的MAC上運行。在MAC上安裝Java 7一個麻煩。有人可以幫我運行這個文件嗎?Jar文件沒有運行在Java 6或更早的版本

堆棧跟蹤:

: 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 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
+2

讓yu用選項'javac -source 1.6編譯你的java代碼。 ..'? – reporter 2012-07-31 08:06:31

回答

5

這是預期的。如果你想與編譯目標6 JDK 7,你應該使用以下(假設你不使用Java 7的功能):

javac -source 1.6 -target 1.6 

如果你使用Maven,去爲:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    </configuration> 
</plugin> 

正如你在評論中所說的,你使用Netbeans。我沒有親身經歷,但根據documentation,您可以更改源/二進制格式的值(在此情況下轉換爲JDK 6)。

+0

謝謝!我一直把-source 1.6沒有-target 1.6。 – 2012-12-01 22:30:18

0

你應該在一個Java 6的運行時編譯目標,例如你的源代碼。使用Ant可以使用target屬性來執行javac任務。使用Maven,使用Maven Compiler Plugin

+0

如何使用Netbeans來做到這一點? – 2012-07-31 08:10:36

0

您需要將編譯目標設置爲JDK 6(或5,或任何您想要支持的最低版本)。

在NetBeans中,轉至項目屬性(在項目上單擊右鍵,選擇屬性_。然後在出現的對話框中,選擇「來源」,並更改「源代碼級別」到JDK 6

-2

你通常不能在Java 6運行時運行Java 7文件,你必須安裝Java 7,或者在Java 6下重新編譯jar。

+0

這是不正確的。所有jdk版本都支持生成兼容的類文件可以使用較舊的JVM。 – 2012-07-31 08:12:46

+0

如果看網站和編譯器選項,你會發現'源'和'目標'選項。即使官方的文件說,這也是可能的。 – reporter 2012-07-31 08:14:52

相關問題