2016-03-21 97 views
0

我的問題是,我無法在Java程序中打開jar。開放,中有一個OpenCV庫。如果我雙擊該.jar,那麼它做工精細,如果我在Mac OS X的終端類型,它正常工作以及。Runtime.getRuntime()。exec(「java -jar xxx.jar); Not Working | Mac OS X

@Override 
public void actionPerformed(ActionEvent e) { 
    if(e.getSource() instanceof JButton){ 
     JButton button = (JButton) e.getSource(); 
     if(button.getText().equals("Aktivieren")){ 

      System.out.println("Yaay"); 
       String str; 

       if(Main.os.contains("Mac")){ 
        str = "java -jar "+System.getProperty("user.home") + "/Library/Application\\ Support/MW"+"/System/Core.jar"; 
        System.out.println(str); 
       } else { 
        str = "java -jar "+Main.directory+"/MW/System/Core.jar"; 
       } 

       System.out.println(str); 

       try { 
        Runtime.getRuntime().exec(str); 
       } catch (IOException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 

     } 
    } 
} 

所以系統輸出的輸出是: Java的罐子/用戶/技術/庫/應用程序\支持/ MW /系統/ core.jar添加

當我在終端手工粘貼它只是正常工作

而且我沒有收到錯誤消息。

對不起,我的英語不好,即時通訊德語。

謝謝(或其他)技術

+0

,並使用像Eclipse的IDE,你需要添加'一個罐子到buildpath'。這裏有大量的資源,我不想發佈一個新的,以避免重複。 –

+0

我認爲這可能是因爲classpath問題。 –

+0

這會失敗,因爲您不能使用帶有空格或反斜槓的任何參數的「Runtime.exec(String)」。使用'Runtime.exec(String [])'代替,例如'.exec(new String [] {「java」,「-jar」,System.getProperty(「user.home」)+「/ Library/Application Support/MW/System/Core.jar」)}沒有反斜槓) –

回答

0

你可以試試這樣做嗎?

if(Main.os.contains("Mac")){ 
    String jar = "System.getProperty("user.home") + "/Library/Application\\ Support/MW"+"/System/Core.jar"; 
    str = "java -classpath " + jar + " -jar "+System.getProperty("user.home") + "/Library/Application\\ Support/MW"+"/System/Core.jar"; 
    System.out.println(str); 
} else { 
    String jar = "Main.directory+"/MW/System/Core.jar"; 
    str = "java -classpath " + jar + " -jar "+Main.directory+"/MW/System/Core.jar"; 
} 

一般來說,我喜歡使用ProcessBuilder但如果你需要它的一個項目,將無法解決您的問題:)

+0

它沒有解決問題;(它不能打開。 – Tech

+0

是的,它不會工作。你必須創建shell並在shell中執行java程序。 –