我想在我的应用程序中支持Java 1.5+,但如果用户使用Java 1.6 +特定的API调用在Java 1.6+ JVM上运行,则有选择地启用功能。所以我需要一种方法来检查当前版本的JVM并确保只使用可用的API。当然,我将使用-target 1.5
编译。
我想出了:
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
s ?
答案 0 :(得分:3)
您可以使用反射来查看您想要存在的事物是否存在:
try {
DesiredClass.class.getMethod("desiredMethod", <parameter types...>)
// Do 1.6 things
}
catch (NoSuchMethodException e) {
// Do 1.5 things
}