2016-03-21 6 views
0

Mein Problem ist, dass ich ein Glas in einem Java-Programm nicht öffnen kann. Die .jar, die ich möchte es funktioniert gut als gut geöffnet, hat eine OpenCV Bibliothek drin. Wenn ich die .jar Klicken verdoppeln, dann fein es funktioniert. Wenn ich es in der Mac OS X-Terminal Typ.Runtime.getRuntime(). Exec ("java -jar xxx.jar); Nicht funktionierend | 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(); 
       } 

     } 
    } 
} 

So ist der Ausgang des Sysout ist: Tech java -jar/Users// Library/Application \ Support/MW/System/core.jar

Und wenn ich es manuell im Terminal einfügen funktioniert es ganz gut

.

Und ich bekomme keine Fehlermeldungen.

Entschuldigung für mein schlechtes Englisch, im Deutsch.

Danke (oder was auch immer) Tech

+0

Wenn Sie es für ein Projekt benötigen und verwenden Sie eine IDE wie Eclipse, müssen Sie 'ein Glas zu dem hinzufügen Buildpath'. Es gibt Unmengen an Ressourcen und ich möchte keine neuen veröffentlichen, um Doppelarbeit zu vermeiden. –

+0

Ich denke, das könnte wegen des Klassenpfadproblems sein. –

+0

Dies schlägt fehl, weil Sie 'Runtime.exec (String)' nicht mit Parametern verwenden können, die Leerzeichen oder Backslashes enthalten. Verwenden Sie stattdessen "Runtime.exec (String [])", z. '.exec (new String [] {" java "," -jar ", System.getProperty (" user.home ") +"/Bibliothek/Anwendungsunterstützung/MW/System/Core.jar ")})' (Hinweis keine Backslashes) –

Antwort

0

Könnten Sie versuchen, dies zu tun?

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"; 
} 

Im Allgemeinen würde ich lieben ProcessBuilder zu verwenden, aber das wird das Problem nicht lösen :)

+0

Es ist nicht das Problem zu beheben; (Es ist nicht zu öffnen. – Tech

+0

ja es wird nicht funktionieren. Sie müssen Shell erstellen und führen Sie das Java-Programm in der Shell. –