2012-08-22 163 views
3

我有一個code.jar在1.7版本的java中運行良好,但是當與1.6版本的linux一起使用另一臺計算機時,它給我一個錯誤,我如何在1.6版本中運行它?如何使用舊版本的Java 1.6運行.jar 1.7程序?

+2

什麼是錯誤?這很可能是您需要最新的JDK來運行它的時期。 – Philippe

+2

線程「main」中的異常java.lang.UnsupportedClassVersionError:tes:Unsupported major.minor版本51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 在java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 在java.net.URLClassLoader.access $ 000(URLClassLoader.java:73) 在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:212) ...... 找不到主類:TES。程序將會退出。 – user1475288

+0

錯誤在上面的註釋中看起來像這樣 – user1475288

回答

0

我不認爲你可以運行較低版本的更高版本類。

另一種方法可以是在編譯​​時設定target version爲1.6。

例子:

javac yourFile.java -target 1.6 
+0

什麼是表揚? 我可以寫javac -source 1.6 code.jar嗎? – user1475288

+0

@ user1475288:它不是來源,它是目標。閱讀我的答案中提供的鏈接。 – kosa

+0

但如果我的文件是「yourfile.jar」 我可以使用 javac file.jar -target 1.6? – user1475288

1

如果密碼不與舊的Java兼容性標誌編譯,你將不能夠在1.6運行它。

+0

什麼是解決方案如何更改我的代碼以便能夠在較舊版本中運行 – user1475288

+0

首先確保以code.jar結尾的源代碼可與Java 1.6編譯。然後,當你用javac編譯它時,使用-target 1.6標誌。 –

1

建立在Eclipse中使用Java 6中的項目,您將需要下載Java 1.6 JRE,然後有蝕點1.6 JRE,請參閱:http://www.cleartoolkit.com/dokuwiki/doku.php?id=clearwiki:20.cleardatabuilder:01.setup:01.prerequisites

現在右鍵點擊你的項目 - >屬性,單擊Java編譯器,取消選中「啓用項目特定設置」,單擊「配置工作區設置」,然後選擇1.6作爲您的編譯器合規性級別。

做「事」再次導出您的項目,新的罐子應該工作。

希望這會有所幫助。

3

使用cross-compilation options調用javac時。

如果只有-target選項按照大多數其他答覆中的建議進行指定,那麼1.7 SDK將發出關於-bootclasspath的警告。該選項需要目標JRE版本的rt.jar(注意而不是 JDK)。它允許編譯器檢查引用核心Java SE的代碼的類,方法和屬性實際上存在於rt.jar中。這對確保兼容性非常重要。

0

我在Eclipse中發現了一個解決方案!

如果你到你的項目,並單擊鼠標右鍵訪問屬性,有一個叫做Java編譯器選項卡。如果啓用項目特定屬性並取消選中JDK合規性下的複選框,則可以將源代碼兼容性和.class文件兼容性更改爲1.6。

這應該可以解決你的問題和產生的.jar文件應在兩臺設備上工作。我通過將文件從1.8移動到1.7並在我的Raspberry Pi上進行了測試,測試結果爲OpenJDK 1.7,效果很好。我希望這有幫助。

相關問題