2014-03-01 17 views
0

我已經在eclipse中創建了一個Java項目應用程序,我正在使用JRE系統庫[JavaSE-1.7]。如何使應用程序與任何Java版本一起工作?

當我創建應用程序的可執行jar文件,然後在具有不同Java版本的不同計算機上測試它。問題是由於Java版本的原因,jar文件僅適用於某些計算機。

我的問題是:是否有必要讓應用程序檢查計算機,看看它具有哪個java版本,並且只使用該版本而不是用於實現該項目的java版本?換句話說,你可以創建一個不依賴於java版本的應用程序嗎?

任何建議都很有幫助。

感謝


感謝所有的建議和意見。但我想我會堅持使用Java 7版本,並讓用戶知道他們需要Java 7來運行它。

+2

使其與任何符合Java 7的JVM一起運行應該沒有問題。無論如何,你的意思是「不起作用」?任何消息? – fge

+3

如果您想要在任何稍微合理的Java版本中使用它,您需要在Java 5中完全編寫和編譯它......因此,我建議您找到其他方法來確保您的客戶端運行Java 7,因爲它確實是目前最合理的版本。 – skiwi

+0

@skiwi更好的是,Java 8即將被釋放。 :-) – Astrobleme

回答

1

不,沒有辦法檢查,而不是我認爲你的意思。實際上,一方面你有用於編譯類(你可以選擇)的Java版本,另一方面你的應用程序在其中運行的Java版本(JVM)(你不能選擇)。

好吧,我相信有一種方法來檢查通過一些方法調用或類似的Java版本,但我不認爲這將幫助你在這裏,我的意思是我你不能這樣做:

if(java-7) { 
    //do try-with-resources 
} else { 
    // do usual try-statement 
} 

由於@skiwi建議,請確保您的應用程序編譯反對舊的Java版本,你應該罰款與該版本及以後的JVM。 我不確定是什麼原因導致您的ClassNotFound錯誤,但可能是JVM檢查所需的Java版本,如果它高於可用的版本,它將停止。

如果您從命令行進行編譯,有交換機會告知javac源Java版本目標Java版本。我從未使用過它們,因此您最好搜索關於它們的問題(即javac source and target options)。使用這些工具,編譯器會提醒您不要出現問題,而不必在代碼中明確檢查版本。

0

There is一種檢查Java版本的方法,但您需要多個可執行文件才能執行此操作。

您需要一個root可執行文件,該可執行文件具有低限制的最低Java版本,只需檢查系統的版本即可,然後根據系統的Java版本啓動可執行文件。

你會怎麼來的這個:

System.getProperty()讓你,好了,讓系統性能,具有一些其他的東西,比如安裝的應用程序,如Java版本一起。

你應該創建一個單獨的JAR一個類:

公共類啓動{

public static void main(String[] args) { 

     String javaVersion = System.getProperty("java.version"); 

     // Conditional to launch Jar file 

     if(correctVersion) { // if version is confirmed 

      Runtime.getRuntime().exec("java -jar whatever.jar"); 

     } 

} 

}

我們需要一個根本的原因,下杆的可執行文件,是因爲如果原可執行文件無法在第一時間運行,它將如何檢查Java版本?

希望這能爲你解決。對不起,花了這麼長時間纔得到答案。

相關問題