Ata*_*man 118 java command-line runtime.exec
有没有办法在Java应用程序中运行此命令行?
java -jar map.jar time.rel test.txt debug
Run Code Online (Sandbox Code Playgroud)
我可以用命令运行它但我无法在Java中执行它.
kol*_*kol 179
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("java -jar map.jar time.rel test.txt debug");
Run Code Online (Sandbox Code Playgroud)
http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html
Cra*_*igo 48
您还可以像这样观看输出:
final Process p = Runtime.getRuntime().exec("java -jar map.jar time.rel test.txt debug");
new Thread(new Runnable() {
public void run() {
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
try {
while ((line = input.readLine()) != null)
System.out.println(line);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
p.waitFor();
Run Code Online (Sandbox Code Playgroud)
不要忘记,如果您在Windows中运行,则需要在命令前放置"cmd/c".
mou*_*rix 18
为了避免在标准输出和/或错误输出大量数据时阻止被调用进程,您必须使用Craigo提供的解决方案.另请注意,ProcessBuilder优于Runtime.getRuntime().exec().这有几个原因:它更好地标记了参数,并且还处理错误标准输出(也请在此处查看).
ProcessBuilder builder = new ProcessBuilder("cmd", "arg1", ...);
builder.redirectErrorStream(true);
final Process process = builder.start();
// Watch the process
watch(process);
Run Code Online (Sandbox Code Playgroud)
我使用新功能"watch"在新线程中收集这些数据.当被调用的进程结束时,该线程将在调用进程中完成.
private static void watch(final Process process) {
new Thread() {
public void run() {
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
try {
while ((line = input.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
Run Code Online (Sandbox Code Playgroud)
Runtime.getRuntime().exec("java -jar map.jar time.rel test.txt debug");
Run Code Online (Sandbox Code Playgroud)
import java.io.*;
Process p = Runtime.getRuntime().exec("java -jar map.jar time.rel test.txt debug");
Run Code Online (Sandbox Code Playgroud)
如果您遇到任何进一步的问题,请考虑以下问题,但我猜测上述内容对您有用:
归档时间: |
|
查看次数: |
251229 次 |
最近记录: |