- ベストアンサー
Javaで外部プログラムを実行する方法は?
- Javaで外部プログラムを実行する方法について知りたいです。
- 私は現在、プログラムAを実行するとプログラムBが実行されるプログラムを作成したいと考えています。
- ネット上にあるサンプルプログラムを試してみましたが、うまく実行できませんでした。どなたかJavaで外部プログラムを実行する方法についてご存知の方がいらっしゃいましたら、ご教授ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> java.io.IOException: Cannot run program "C:\Users\sintaro\Desktop\jarr\JarTest.jar": CreateProcess error=193, %1 ??L???? Win32 ?A?v???P Runtimeクラスのexec()メソッドでは、実行可能ファイルだけを指定できます。Windowsではexeファイルやbatファイルなどです。 JarTest.jarは実行可能ファイルとして扱われないので、rt.exec("java -jar JarTest.jar");のようにする必要があります。 > 実行しても何も表示されない状態です. exec()メソッドで呼ばれたほうのプログラム(プログラムB)は結果をどのように表示するプログラムなのでしょうか? プログラムBがSystem.out.println()などで標準出力へ結果を書き出すようなものだとすると、呼び出し側のプログラムAはexec()メソッドの返り値のProcessオブジェクトからgetInputStream()を使って読み出してやる必要があります。読み出したデータをどのように表示するかはプログラムAの自由です。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
具体的に、どのようにやろうとして、どんなエラーになるのですか? マニュアルは読みましたか? http://docs.oracle.com/javase/jp/6/api/java/lang/Runtime.html ・コマンドの指定が間違っている ・実行ファイルが見つからない ・classファイルが見つからない 等が考えられますが、コマンドの引数やエラー内容がわからなければ断言できません。
お礼
回答ありがとうございます. ソースコードは, public class Execute02 { public static void main(String[] args) { String filename = "パス"; try { Process proc = Runtime.getRuntime().exec(filename); System.out.println("実行中"); proc.waitFor(); System.out.println("実行終了"); } catch( Exception e ) { System.out.println(e); } } } エラー内容は java.io.IOException: Cannot run program "C:\Users\sintaro\Desktop\jarr\JarTest.j ar": CreateProcess error=193, %1 ??L???? Win32 ?A?v???P と出ています. また,それ以外にも public static void main(String[] args) { try { Runtime rt = Runtime.getRuntime(); rt.exec("java -jar \"パス""); } catch (IOException ex) { ex.printStackTrace(); } } で実行した場合は実行しても何も表示されない状態です.(コンパイルはできます) 以上です. お願いします.
お礼
ご回答ありがとうございます. お陰様で実行することができました. ありがとうございました.