我有一个使用JDK 1.7编译的JAR文件,我想在加载时检查运行我的JAR文件的Java运行环境是否是1.7或更新版本。有没有方法可以做到这一点?
我尝试使用System.getProperty("java.version"),但由于我的类版本是51,而JRE 1.6拒绝加载它,所以这并没有起到帮助作用。
我有一个使用JDK 1.7编译的JAR文件,我想在加载时检查运行我的JAR文件的Java运行环境是否是1.7或更新版本。有没有方法可以做到这一点?
我尝试使用System.getProperty("java.version"),但由于我的类版本是51,而JRE 1.6拒绝加载它,所以这并没有起到帮助作用。
public class MyStarter
{
public static void main(String[] args)
{
String version = System.getProperty("java.version", null);
boolean isVersionOK = ... ;
if (!isVersionOK)
{
System.err.println("Wrong Java version detected");
// or display some messagebox using JOptionPane
System.exit(1);
}
Class mainClass = Class.forName("com.foo.MyMain");
Method main = mgr.getDeclaredMethod("main", new Class[] { String[].class });
main.invoke(null, new Object[] { args });
}
}
-source 1.2 -target 1.2
编译MyStarter类(仅此类)。
使用常规编译器编译其余类(例如创建Java7 .class文件)。com.foo.MyStarter
添加为Main-Class:
属性。build.xml
中的"compile"目标大致如下:-target 1.6
标志来对较旧的版本进行编译。但从你的帖子中看来,你需要1.7的功能。因此,也许你可以编写一个“包装器”应用程序,该应用程序针对旧版本的Java进行编译,执行检查,然后加载和运行你的jar文件,或者你可以使用某种脚本来实现同样的效果。<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
<information>
<title>Dynamic Tree Demo</title>
<vendor>Dynamic Team</vendor>
<icon href="sometree-icon.jpg"/>
<offline-allowed/>
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.6+" href=
"http://java.sun.com/products/autodl/j2se"/>
<jar href="DynamicTreeDemo.jar"
main="true" />
</resources>
<application-desc
name="Dynamic Tree Demo Application"
main-class="webstartComponentArch.DynamicTreeApplication"
width="300"
height="300">
</application-desc>
<update check="background"/>
</jnlp>