2013-01-14 85 views
0

我有一臺PowerMac,它在某些.jars上給我的版本號很糟糕。我很想讓它看起來像是在運行Java 6.我該如何欺騙這個版本?讓我也說我正在運行PowerPC和豹在不支持的Java版本上運行Java包

+0

當程序詢問「我在哪個版本上運行」時,您想欺騙所返回的版本?如果是這樣,我懷疑是否有辦法,但不知道如何修改JDK。 –

+5

這是由**不兼容的類文件版本**引起的;它不是*僅僅是「Java報告錯誤版本」的問題。唯一的解決方案是*升級* JVM或*重新編譯*較低版本的類。 (可能有一種工具可以將類文件格式改爲兼容的東西,但這似乎很簡單。) – 2013-01-14 01:55:39

+0

我有OpenJDK 7和Java 1.5 – Keaton

回答

3

最有可能的問題是,你有Java 6的JAR文件,你試圖在舊的Java安裝上運行它們。

How would I spoof the version?

你的問題的答案是你不能。運行Java 6特定JAR文件以使用Java 6(或更高版本)JRE或JDK的方式。

問題是Java類文件的格式發生了變化,您的安裝無法應付新的格式。這不是你可以假裝不存在的無償變化。 Java 6(實際上是Java 5)支持泛型類型,枚舉,註釋和其他東西。假設JAR包含使用這些新語言功能的代碼,舊版JRE根本不知道如何處理它們。

解決辦法有兩個:

  • 升級你的Java安裝在所有的機器所需要的水平。這是最好的解決方案......如果它是一種選擇......因爲這意味着您的用戶將從安全性,錯誤修復和性能增強中受益。 (並且您的項目的進度不會因支持傳統平臺的限制而被阻止。)

  • 編譯所有代碼以便與仍需使用的最舊版本的Java兼容。可以在相應的舊JDK上編譯,也可以在更新的JDK上使用相應的-source/-target/-Xbootclasspath選項進行編譯,如javac手冊頁所述。

與第二個解決方案的缺點是,如果有問題的JAR文件的源代碼使用最近增加了Java語言功能或API,然後重新編譯爲老平臺將失敗。爲了解決這個問題,你需要重寫你的代碼,用古老的東西代替現代的東西。 IMO不是一個好的解決方案。


另一種可能是您看到損壞的JAR文件。這是不太可能的,但是如果您使用applet或webstart,並且服務器提供錯誤頁面而不是JAR文件,則可能發生這種情況。


第三種可能性是您根本沒有正確配置Mac的Java安裝。使Java 7成爲默認允許您運行沒有類版本問題的所有內容。 (Thanks @ paulsm4)請注意,我無法幫助你...'因爲我不在Mac上使用Java。

+0

另請嘗試設置「Java首選項」,以便一切(命令行JRE,JDK,瀏覽器插件等)都指向您的OpenJDK7:http://www.java.net/forum/topic/jdk/java-se/java-preferences-using-jre-7u6 -mac-os-x – paulsm4

+0

好的,我真的安裝了PowerPC的BSD端口SoyLatte。它必須通過bash_profile進行設置。 Java prefs只能識別JRE 1.5 – Keaton

+0

我可以將它添加到Java pref窗格嗎? – Keaton

相關問題