2017-04-13 50 views
3

如果Java版本比較老,那麼Java會產生這樣一個非常神祕的錯誤消息:UnsupportedClassVersionError ...。雖然發行說明中提供了必要的Java版本,但許多客戶都會通過此錯誤消息聯繫支持人員。如何在用戶友好的消息中更改UnsupportedClassVersionError?

有沒有簡單的解決方案來向用戶顯示更好的錯誤信息?

我們使用Gradle作爲建築物。我如何編譯一個較小的文件類型的文件集?在這個文件中,我們可以做一個版本檢查來顯示錯誤信息。

當然,我們不能更改完整項目的類文件版本。

+0

這是否幫助http://stackoverflow.com/questions/2591083/getting-java-version-at-runtime –

+0

沒錯 - 到上添加,也可以使一個Java類是無論是在安裝時還是在每次啓動程序時運行,該程序都是爲JDK 1.1編譯的,並且會檢查Java的版本 - 如果它太舊,則會顯示用戶友好的錯誤消息。 –

回答

1

如何編譯一個較小的類文件版本的一小組文件?

使用javac命令的-source-target選項(參見reference documentation),或由於您使用的搖籃,使用在搖籃適當的相應設置,建立文件,你需要能夠部分在較舊的Java版本上運行。

對於Gradle,您可以使用sourceCompatibilitytargetCompatibility屬性,請參閱Gradle文檔中的Table 47.8

+0

如果將此屬性設置爲較低的值,則會影響所有文件。這不起作用。 – Horcrux7

+0

@ Horcrux7當然,不要把它放在整個項目的主Gradle配置文件中。創建一個單獨的模塊並僅爲該模塊進行配置。 – Jesper

0

通過JWS發佈您的應用程序。它具有確保安裝所需JRE版本的條款。

1

我創建了一個小型圖書館稱爲use-newer-java,你可以用它來進行版本檢查:

  1. 包括use-newer-java作爲依賴於你的項目
  2. 設置在你的內置清單的Main-Class:場罐子到 use.newer.java.Version8use.newer.java.Version9等適當的。
  3. 將您的jar清單中的Main-Class-After-UseNewerJava-Check:設置爲您應用的普通主類 - 使用較新的Java將遵循此設置,並在進行檢查後調用此代碼。

https://github.com/rtyley/use-newer-java

相關問題