2012-02-23 63 views
1

我想在我的應用程序中支持Java 1.5+,但如果用戶在Java 1.6+ JVM上運行,則使用Java 1.6 + -specific API調用。所以我需要一種方法來檢查當前版本的JVM,並確保只使用可用的API。當然,我將用-target 1.5進行編譯。如何檢查當前版本的Java是否高於1.6

我想出:

if (System.getProperty("java.vm.version").startsWith("1.5")) { 
    // Do 1.5 things 
} else { 
    // Do 1.6+ things 
} 

這似乎符合這個要求,但我不知道是否有一個「更好」的方式?此外,如果我小心不要從我的1.5代碼中調用任何1.6 API調用,那麼在1.5 JVM上運行時是否仍有可能獲得NoSuchMethodError s,NoClassDefFound

+0

可能的複製爲:http://stackoverflow.com/questions/2591083/getting-version-of-java-in -運行 – Thomas 2012-02-23 19:45:05

回答

3

你可以使用反射來看看是否有你想要做的事:

try { 
    DesiredClass.class.getMethod("desiredMethod", <parameter types...>) 
    // Do 1.6 things 
} 
catch (NoSuchMethodException e) { 
    // Do 1.5 things 
} 
相關問題