修复 Java 代码中的 JRE 错误并重新编译应用程序
Fixing JRE error in Java code and recompiling application
我在 Windows 7 上尝试了 运行 一些依赖旧 JRE 版本的旧实用程序。
我最后 Java Runtime Environment 1.7.0_79
安装了。当我尝试启动应用程序时,出现错误:
"Sivus requires JRE 1.4 or later to run. You can download JRE
from...etc"
是否有针对resolve/fix这种或那种性质的解决方法?
打包在 SFX ZIP 存档中的程序主要可执行文件,我提取文件,发现 Java file,这使得检查。有一个代码:
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 或在 main 方法中删除此检查。
- 将固定的 java 文件放入与包匹配的文件夹中
编译java文件,例如:
call "C:\Program Files (x86)\Java\jdk1.7.0_79\bin\javac.exe" C:\test\mypackage\MyClass.java -cp C:\test\My.jar -source 1.4 -target 1.4
编译class文件并替换旧文件(先备份)
首先,我建议不要使用 "provenance" 值得怀疑的旧工具。特别是,不是作为安全扫描仪。当然,您可以找到比这个更新、更好支持的工具...
如果您希望继续(并冒险),那么一种方法是修改 class,按照@Rustam 的建议重新编译并重建 JAR 文件。
另一种方法是使用 main
方法创建一个简单的包装器 class,该方法调用 System.setProperty
来调整 "java.version"
属性 的值,然后调用真正的main
方法。
我在 Windows 7 上尝试了 运行 一些依赖旧 JRE 版本的旧实用程序。
我最后 Java Runtime Environment 1.7.0_79
安装了。当我尝试启动应用程序时,出现错误:
"Sivus requires JRE 1.4 or later to run. You can download JRE from...etc"
是否有针对resolve/fix这种或那种性质的解决方法? 打包在 SFX ZIP 存档中的程序主要可执行文件,我提取文件,发现 Java file,这使得检查。有一个代码:
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 或在 main 方法中删除此检查。
- 将固定的 java 文件放入与包匹配的文件夹中
编译java文件,例如:
call "C:\Program Files (x86)\Java\jdk1.7.0_79\bin\javac.exe" C:\test\mypackage\MyClass.java -cp C:\test\My.jar -source 1.4 -target 1.4
编译class文件并替换旧文件(先备份)
首先,我建议不要使用 "provenance" 值得怀疑的旧工具。特别是,不是作为安全扫描仪。当然,您可以找到比这个更新、更好支持的工具...
如果您希望继续(并冒险),那么一种方法是修改 class,按照@Rustam 的建议重新编译并重建 JAR 文件。
另一种方法是使用 main
方法创建一个简单的包装器 class,该方法调用 System.setProperty
来调整 "java.version"
属性 的值,然后调用真正的main
方法。