Runtime.getRuntime().exec() を使用して Java プログラムを実行する方法。たとえば、java ファイルのパスは c:/java/abc.java とします。コードを手伝ってください。
6 に答える
その事を忘れるな:
- Javaプログラムのstdout/stderrを読む必要があるかもしれません
Javaコマンドを実行する前に、環境変数とPATHを設定/更新する必要がある場合があります
CreateProcess:c:\ j2sdk1.4.0 \ bin \ helloworld error = 2
Win32CreateProcess
は、指定したコマンドが見つからない場合、エラーコードとして2を返すことを意味します。より具体的には、コマンドがルックアップパス上の実行可能ファイルを参照しない場合。
より完全な" "コード、およびこのスニペットについては、このSOの質問を参照してください。Runtime.getRuntime().exec()
Runtime.getRuntime().exec("cmd /K")
このコードは、(のように)シェルを作成し、sdtin
実行したいコマンドを記述します。
このアプローチの利点は、シェルプロセスを再利用して、前のコマンドの恩恵を受けることです。''を実行してから' cd
'を実行するdir
と、後者のコマンドは、cd
コマンドによって参照されるディレクトリの内容を表示します。
またはPATH
を使用する直前の設定についても同じことが言えます。javac
java
abc.java に実行するメイン メソッドが含まれているとします。
Runtime.getRuntime().exec("javac c:\java\abc.java -d c:\java\")
Runtime.getRuntime().exec("java c:\java\abc")
Runtime の代わりにProcessBuilderを使用する必要があります。基本的な使用方法は次のとおりです。
Process process = new ProcessBuilder(command).start();
上記のリンクの下にさらにコードがあります。この質問も参照してください。
String path1 = "f://" + File.separator+username+File.separator+progName;
Runtime runtime = Runtime.getRuntime();
String command = "javac -classpath " + path + " " + path1;
System.out.println(command);
Process process = runtime.exec(command);
InputStream error = process.getErrorStream();
Java プログラムで別の Java プログラムを実行したいということです。その場合、この SO スレッドが役立つ場合があります。
javaalmanacと呼ばれていた優れたリソースをご覧ください。
http://www.exampledepot.com/egs/java.lang/Exec.html
try {
// Execute a command with an argument that contains a space
String[] commands = new String[]{"grep", "hello world", "/tmp/f.txt"};
commands = new String[]{"grep", "hello world", "c:\\Documents and Settings\\f.txt"};
Process child = Runtime.getRuntime().exec(commands);
} catch (IOException e) {
}