2016-03-21 21 views
0

私の問題は、Javaプログラムでjarファイルを開くことができないことです。オープン、その中にOpenCVのライブラリを持っている。私はの.jarをダブルクリックすると、それは正常に動作。私は、Mac OS Xターミナルでそれを入力した場合、それは罰金aswellに動作します。だから、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(); 
       } 

     } 
    } 
} 

SYSOUTの出力次のとおりです。 のjava -jar /ユーザ/テック/ライブラリ/ Application \サポート/ MW /システム/ Core.jar

と私はターミナルで手動で貼り付けるとそれだけで正常に動作しますが

エラーメッセージは表示されません。

私の悪い英語、私のドイツ人のために申し訳ありません。

おかげで(または何でも)テック

+0

あなたがプロジェクトのためにそれを必要とEclipseのようなIDEを使用する場合は、あなたが 'jarファイルを追加する必要がありますビルドパス '。これに関するリソースがたくさんあり、重複を避けるために新しいものを投稿したくありません。 –

+0

これはクラスパスの問題が原因と考えられます。 –

+0

スペースやバックスラッシュを含むパラメータで 'Runtime.exec(String)'を使用できないため、これは失敗します。代わりに 'Runtime.exec(String [])'を使用してください。 '.exec(新しいString [] {" java "、" -jar "、System.getProperty(" user.home ")+"/Library/Application Support/MW/System/Core.jar ")})'バックスラッシュはありません) –

答えて

0

あなたはこれをやってみてもらえますか?

私は ProcessBuilderを使用するのが大好きだが、それはあなたの問題を解決することはできません一般的に
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"; 
} 

:)

+0

それは問題を解決していません;(それも開いていません。 – Tech

+0

はいそれはうまく動作しません。シェルを作成し、シェルの内部でJavaプログラムを実行する必要があります。 –