2009-10-22 48 views
1

如果您曾經使用過Java,我想至少有一次您遇到過不支持版本的錯誤。大家知道如何修復它,改變JRE等。Java不支持的版本 - 經典問題

今天,我想知道如何製作jar文件,它可以運行任何地方(任何JRE)。

回答

5

簡答:不可能。

更好的回答:定義你的最低目標(這真的不應該是「任何JRE」)。也許你的意思是「一個標準的J2SE 1.4安裝」或「在Android上」(它不是真的是一個「JRE」)。

準確的最低要求是所使用的Java語言功能,API和/或其他庫的使用(它們針對的是什麼?)以及不同Java平臺的差異的組合。 DVD播放機非常不像臺式機。

2

我不太確定你會希望這個目標是什麼,現在大多數人都是以Java 1.4+平臺爲目標,這意味着他們也可以在1.5和1.6上運行,因爲實際上沒有人使用任何Java版本比1.4,你應該是安全的。

話雖如此,它並非完全不可能,只是很難,維護是一場噩夢。

0

即使您將其作爲目標,您也只能對子集進行測試。根據你的自動測試的綜合程度,你可能只想定義一個小的集合 - 可能是6個左右 - 適當支持的JRE。如果有人試圖用別的東西來運行它,那麼它可能會工作,但你不能聲稱已經測試過它。

如果是GUI應用程序,這更像是一場噩夢,因爲測試GUI太糟糕了。所以在這種情況下你會希望支持更少的JRE。

請記住,您需要測試JRE/OS的組合,並且有許多不同的操作系統 - 至少有十幾個不同版本的Windows常用(不包括本地化)。

0

如果您正在創建的應用程序使用Java 1.5語法進行編程,則可以嘗試使用Retrotranslator。它使用字節碼操作來修改您的類和一些運行時代碼,這些代碼可以允許您的代碼使用版本1.4和1.3的JVM運行。

當然,它有很大的侷限性,但它支持從1.5規範的許多功能(摘自其網站):

什麼Java 5.0功能的支持?

  • 泛型
  • 批註
  • 反思泛型和註釋
  • 類型安全枚舉
  • 自動裝箱/拆箱
  • 增強的for循環
  • 可變參數
  • 協變返回類型
  • 個格式化輸出
  • 靜態導入
  • 併發工具
  • 集合框架增強

在同頁的末尾也有一些鏈接,類似的工具。但Retrotranslator似乎是唯一仍然積極維護的。

0

這個錯誤是當你的java類編譯成一個版本&在另一個版本中運行。