修复 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. 修复代码 - 您可以将 1.6、1.7、1.8 添加到 checkJavaVersion 或在 main 方法中删除此检查。
  2. 将固定的 java 文件放入与包匹配的文件夹中
  3. 编译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

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

首先,我建议不要使用 "provenance" 值得怀疑的旧工具。特别是,不是作为安全扫描仪。当然,您可以找到比这个更新、更好支持的工具...

如果您希望继续(并冒险),那么一种方法是修改 class,按照@Rustam 的建议重新编译并重建 JAR 文件。

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