我尝试在Windows 7上运行一些依赖于旧JRE版本的旧实用程序。
我已经安装了最新的Java Runtime Environment 1.7.0_79
。当我尝试启动应用程序时,我得到了一个错误:
"Sivus需要JRE 1.4或更高版本才能运行。您可以下载JRE从等"
是否有解决/修复此问题或类似问题的方法?程序主要可执行文件打包在SFX ZIP档案中,我提取文件,并找到Java文件,从而进行检查。有一个代码:
public static boolean checkJavaVersion(){
boolean ok = false;
String version = System.getProperty("java.version");
if (version.indexOf("1.1") > -1) {
ok = false;
}
else if (version.indexOf("1.2") > -1) {
ok = false;
}
else if (version.indexOf("1.3") > -1) {
ok = false;
}
else if (version.indexOf("1.4") > -1) {
ok = true;
}
else if (version.indexOf("1.5") > -1) {
ok = true;
}
return ok;
}
public static void main(String[] args) {
boolean DEBUG = false;
try {
// check if JRE is over 1.4
if (checkJavaVersion() == false){
JOptionPane.showMessageDialog(
null,
"SiVuS requires JRE 1.4 (or later) to run.n"
+"You can download the latest JRE from java.sun.com",
"Java Run Time Environment Error",
JOptionPane.WARNING_MESSAGE);
System.exit(1);
}
如何纠正此问题并重新编译应用程序?依赖于JRE 1.4的应用程序是否可以与当前的JRE一起工作?
这是我做补丁的一个例子。
- 修复代码-你可以添加1.6,1.7,1.8 checkJavaVersion或删除此检查在主方法。
- 将固定的java文件放入与package 匹配的文件夹中
编译java文件,例如:
调用"C:Program Files (x86)Javajdk1.7.0_79binjavac.exe" C:testmypackageMyClass.java -cp C:testMy.jar -source 1.4 -target 1.4
获取编译后的类文件并替换旧文件(先备份)
首先,我建议不要使用"来源"可疑的旧工具。尤其是,不是作为安全扫描仪。当然,您可以找到一个比这个工具更新、支持更好的工具…
如果您希望继续(并承担风险),那么一种方法是修改该类,重新编译并重新构建JAR文件,正如@Rustam所建议的那样。
另一种方法是创建一个简单的包装器类,使用main
方法调用System.setProperty
来调整"java.version"
属性的值,然后调用真正的main
方法。