Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修复Java代码中的JRE错误并重新编译应用程序_Java_Runtime Error_Java 7_Code Snippets_Sfx - Fatal编程技术网

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

修复Java代码中的JRE错误并重新编译应用程序,java,runtime-error,java-7,code-snippets,sfx,Java,Runtime Error,Java 7,Code Snippets,Sfx,我试着在Windows7上运行一些依赖于旧JRE版本的旧工具 我最近安装了Java运行时环境1.7.0_79。当我尝试启动应用程序时,出现了一个错误: “Sivus需要JRE 1.4或更高版本才能运行。您可以下载JRE 来自……等” 是否有解决/修复此问题或类似问题的方法? 程序主可执行文件打包在SFX ZIP存档中,我解压缩了文件,并找到了,这使得检查。有一个代码: public static boolean checkJavaVersion(){ boolean ok = fal

我试着在Windows7上运行一些依赖于旧JRE版本的旧工具

我最近安装了Java运行时环境1.7.0_79。当我尝试启动应用程序时,出现了一个错误:

“Sivus需要JRE 1.4或更高版本才能运行。您可以下载JRE 来自……等”

是否有解决/修复此问题或类似问题的方法? 程序主可执行文件打包在SFX ZIP存档中,我解压缩了文件,并找到了,这使得检查。有一个代码:

  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文件,例如:

    调用“C:\ProgramFiles(x86)\Java\jdk1.7.0\u 79\bin\javac.exe”C:\test\mypackage\MyClass.Java-cp C:\test\My.jar-source 1.4-target 1.4

  • 获取已编译的类文件并替换旧文件(先备份)


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

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


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

    你用JRE 1.4检查过吗?我没有JRE 1.4,它太旧了。p3:这要求编译MyClass.java?我不能只编辑目标myfile.java,然后重新创建SFX可执行文件?提取的SFX包没有任何
    .jar
    文件。有myfile.java和myfile.classMy.jar——例如,如果只有一个java文件可以跳过“-cp…”。我认为仅仅编辑java文件是不够的。所以我应该只使用这个命令来重新创建相应的myfile.class:
    调用“C:\ProgramFiles(x86)\java\jdk1.7.0\u 79\bin\javac.exe”C:\test\mypackage\MyClass.java
    ?我只安装了JRE,没有安装JDK。是否有一个单独的JDK版本,或者它唯一与JRE捆绑在一起的版本?单独的-