電子書籍の厳選無料作品が豊富!

いつもお世話になっています。

タイトルのとおり外部プログラムの実行方法についてです。
現在プログラムAを実行するとプログラムBが実行されるプログラムを作成できないかと考えています。
少し調べてみたところ外部プロセスの実行がそれにあたるかと思うのですが、ネット上にあるサンプルプログラムを実行してみてもコンパイルこそできるものの実行がエラーになってしまいます。
以下のサイトを参考にしていますが、サンプルにある通りのメモ帳の実行は出来ますが,javaプログラムの実行はできない状態です。
http://syunpon.com/programing/java/sample/execut …
私の考えているようなことはjavaで実装可能なのでしょうか?
ご存知の方おられましたらご教授お願いします。

A 回答 (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の自由です。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます.
お陰様で実行することができました.
ありがとうございました.

お礼日時:2013/11/07 12:52

具体的に、どのようにやろうとして、どんなエラーになるのですか?


マニュアルは読みましたか?
http://docs.oracle.com/javase/jp/6/api/java/lang …

・コマンドの指定が間違っている
・実行ファイルが見つからない
・classファイルが見つからない
等が考えられますが、コマンドの引数やエラー内容がわからなければ断言できません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます.
ソースコードは,

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();
}
}
で実行した場合は実行しても何も表示されない状態です.(コンパイルはできます)

以上です.
お願いします.

お礼日時:2013/11/05 12:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!