修复Java代码中的JRE错误并重新编译应用程序



我尝试在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. 修复代码-你可以添加1.6,1.7,1.8 checkJavaVersion或删除此检查在主方法。
  2. 将固定的java文件放入与package
  3. 匹配的文件夹中
  4. 编译java文件,例如:

    调用"C:Program Files (x86)Javajdk1.7.0_79binjavac.exe" C:testmypackageMyClass.java -cp C:testMy.jar -source 1.4 -target 1.4

  5. 获取编译后的类文件并替换旧文件(先备份)

首先,我建议不要使用"来源"可疑的旧工具。尤其是,不是作为安全扫描仪。当然,您可以找到一个比这个工具更新、支持更好的工具…

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

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

相关内容

  • 没有找到相关文章

最新更新