2017-01-17 13 views
-2

私は、コマンドラインから.jarを実行するプロセスビルダーを作成しようとしています。私はそれはウィンドウ上でうまく動作しているが、私はMacやLinuxの仕組みに慣れていないので、私は彼らのcmdラインを知らない。ここでMac OS&Linux用ProcessBuilder

は私のコードです:

ProcessBuilder pb = new ProcessBuilder(new String[] { "java", "-jar", Settings.SAVE_DIR + Settings.SAVE_NAME}); 
      pb.directory(new File(System.getProperty("java.home") + File.separator + "bin")); 
      final Process proc = pb.start(); 

誰も私は、Linux/Mac用のCMDラインを見つけることができますか?

+0

「Settings.SAVE_DIR」と「Settings.SAVE_NAME」の値は何ですか? – Andreas

+0

@Andreas SAVE_NAME = "name.jar"; \t SAVE_DIR = System.getProperty( "user.home")+ File.separator; –

+1

jarファイルは実際には '〜/ name.jar'にありますか?どのようにコードが機能していないのですか? – Andreas

答えて

1

エラー、なぜプロセスビルダーを使用してJava内からJavaアプリケーションを実行したいですか?

他のJARがクラスパスにあることを確認してください。そのJARの "main method"を実行します。あなたが分離を心配しているならば。あなたはそのために特別なクラスローダーを使用することができます。

なぜ、あなたのJVMをフォークするのはなぜですか?

あなたの実際の質問については、単に手動でコマンドを作成してみてください。私が意味するのは、linux/macシステムでシェルを開き、タイプあなたが気にしているコマンドラインです。あなたはそれが働くまで試し続けます。そして、それを見てください。プラットフォームに依存しない方法でそのことを作成する最も簡単な方法を特定します。

+0

メインメソッドを実行するためにリフレクションを使用すると、実行しようとしているプログラムがバグです。 ClassLoaderは、私が実行しているプログラム内のすべてのリソースをロードしていないようで、loadResourceをオーバーライドすることは、もっと必要な作業です。 –