2012-02-23 39 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 
} 
相关问题