2

我尝试在 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 一起使用?

4

2 回答 2

0

我如何做这样的补丁的一个例子。

  1. 修复代码 - 您可以将 1.6、1.7、1.8 添加到 checkJavaVersion 或在 main 方法中删除此检查。
  2. 将固定的java文件放在与包匹配的文件夹中
  3. 编译java文件,例如:

    调用“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

  4. 获取编译好的class文件并替换旧文件(先备份)

于 2015-10-19T12:42:49.667 回答
0

首先,我建议不要使用“出处”可疑的旧工具。特别是,不是作为安全扫描仪。当然,您可以找到一种比这个更新且支持更好的工具......

如果您希望继续(并承担风险),那么一种方法是修改该类,重新编译并重建 JAR 文件,正如@Rustam 所建议的那样。

另一种方法是创建一个简单的包装类,其中包含一个main调用System.setProperty来调整"java.version"属性值的方法,然后调用真正的main方法。

于 2015-10-19T12:51:31.417 回答