我有一臺PowerMac,它在某些.jars上給我的版本號很糟糕。我很想讓它看起來像是在運行Java 6.我該如何欺騙這個版本?讓我也說我正在運行PowerPC和豹在不支持的Java版本上運行Java包
回答
最有可能的問題是,你有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。
- 1. 不受支持major.minor版本.51和在Java 1.6上運行java 1.7代碼1.6
- 2. Java版本支持的Unicode版本6
- 3. Java在Windows上運行不同版本
- 4. JAVA運行時錯誤:java.lang.UnsupportedClassVersionError。不支持MAJOR.MINOR版本51.0
- 5. JAVA運行時錯誤:不支持MAJOR.MINOR版本51.0
- 6. 不支持的Java類版本52
- 7. 與Java 8,不支持major.minor版本51.0
- 8. 在OSX上運行其他java版本
- 9. Java版本,Tomcat,不受支持的major.minor版本52.0
- 10. Java IO異常功能支持來自不同的Java版本
- 11. 哪個版本的Eclipse支持Java 8?
- 12. 檢測支持的最低Java版本
- 13. Griffon支持哪些Java版本?
- 14. 不受支持的Java版本:無法在Java 1.7下啓動:需要Java 1.8或更高版本
- 15. 在java中不支持的類版本錯誤?
- 16. 運行多個Java版本
- 17. 在RaspberryPi Linux 3.18.7-v7 + arm上支持Java位版本
- 18. 如何編譯支持舊版本Java的.java?
- 19. 的Java/Maven的混亂 '不支持MAJOR.MINOR版本51.0'
- 20. 不受支持的版本MAJOR.MINOR 52.0 - Maven的錯誤JAVA
- 21. 在heroku上爲nodejs應用程序提供Java不受支持的類版本?
- 22. Java支持哪種ZIP版本(1.6或其他版本)
- 23. Java Card Converter:版本50.0不受支持的類文件格式
- 24. signjar不支持OSX Java版本「1.6.0_37」的「sigalg」屬性
- 25. Java不支持的主要次要版本52.0
- 26. 如何修復Android Studio不受支持的Java版本?
- 27. Java不支持的版本 - 經典問題
- 28. 的Java,ASM org.objectweb.asm.util.CheckClassAdapter導致不支持MAJOR.MINOR版本0.0
- 29. 的Java堆棧跟蹤誤差不支持MAJOR.MINOR版本51.0
- 30. OSGi包解決,但給了在運行時不支持MAJOR.MINOR版本51.0
當程序詢問「我在哪個版本上運行」時,您想欺騙所返回的版本?如果是這樣,我懷疑是否有辦法,但不知道如何修改JDK。 –
這是由**不兼容的類文件版本**引起的;它不是*僅僅是「Java報告錯誤版本」的問題。唯一的解決方案是*升級* JVM或*重新編譯*較低版本的類。 (可能有一種工具可以將類文件格式改爲兼容的東西,但這似乎很簡單。) – 2013-01-14 01:55:39
我有OpenJDK 7和Java 1.5 – Keaton