2015-10-18 53 views
2

我試着在Windows 7上運行一些依賴舊JRE版本的舊實用程序。修復Java代碼中的JRE錯誤並重新編譯應用程序

我上次安裝了Java Runtime Environment 1.7.0_79。當我attepmt啓動應用程序時,我得到了一個錯誤:

"Sivus requires JRE 1.4 or later to run. You can download JRE from...etc"

是否有這種性質的解決辦法,以解決/解決這個問題還是什麼? 程序主要可執行文件打包在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一起工作?

+0

做了檢查與JRE 1.4? – HRCJ

+0

我沒有JRE 1.4,太舊了。 – minto

回答

1

一個我如何做這樣的補丁的例子。

  1. 修復代碼 - 您可以在checkJavaVersion中添加1.6,1.7,1.8或在main方法中刪除此檢查。在文件夾
  2. 戴上固定的java文件匹配包
  3. 編譯Java文件,例如:

    調用「C:\ Program Files文件(x86)的\的Java \ jdk1.7.0_79 \斌\的javac.exe 「C:\測試\ mypackage中\ MyClass.java -cp C:\測試\ My.jar -source 1.4 -target 1.4

  4. 獲取編譯的類文件,並替換舊文件(備份它第一次)

+0

p3:這需要編譯MyClass.java?我不能只編輯目標myfile.java,然後重新創建SFX可執行文件?提取的SFX包沒有任何'.jar'文件。有myfile.java和myfile.class – minto

+0

My.jar - 例如,如果只有一個java文件,可以跳過「-cp ...」。我認爲它不足以編輯java文件。 – Rustam

+0

所以我應該只用這個命令重新創建相應的myfile.class:'call「C:\ Program Files(x86)\ Java \ jdk1.7.0_79 \ bin \ javac.exe」C:\ test \ mypackage \ MyClass.java '? – minto

0

首先,我會建議不要使用舊的工具w軟管「出處」值得懷疑。特別是,不作爲安全掃描儀。當然,你可以找到一個更新的工具,並支持比這更好的工具...

如果你想繼續(並承擔風險),那麼一種方法是修改該類,重新編譯和重建JAR文件,如@Rustam建議的那樣。

另一種方法是創建一個簡單的包裝類與main方法調用System.setProperty來調整"java.version"屬性的值,然後叫真正的main方法。