如何在 Runtime.getRuntime().exec() 的帮助下执行 java 程序。例如,我们将 java 文件路径设为 c:/java/abc.java。请帮我写代码。
6 回答
不要忘记:
- 您可能需要阅读 java 程序的 stdout/stderr
您可能必须在执行 java 命令之前设置/更新环境变量和 PATH
创建进程:c:\j2sdk1.4.0\bin\helloworld 错误=2
表示 Win32CreateProcess
在找不到您指定的命令时返回 2 作为错误代码;更具体地说,当命令不引用其查找路径上的可执行文件时。
查看这个SO question以获得更完整的“ Runtime.getRuntime().exec()
”代码,以及这个片段。
这段代码创建了一个 shell(如 中Runtime.getRuntime().exec("cmd /K")
),您可以在其中编写sdtin
要执行的任何命令。
这种方法的好处是重用shell进程以从先前的命令中受益:如果您执行一个' cd
',然后执行一个' dir
',后一个命令将显示该命令引用的目录的内容cd
。
设置也是如此PATH
,就在使用javac
or之前java
。
您应该使用ProcessBuilder而不是 Runtime。基本用法如下:
Process process = new ProcessBuilder(command).start();
您将在上面的链接下找到更多代码。另请参阅此问题。
假设 abc.java 包含您要执行的主要方法:
Runtime.getRuntime().exec("javac c:\java\abc.java -d c:\java\")
Runtime.getRuntime().exec("java c:\java\abc")
你的意思是你想让一个Java程序运行另一个Java程序。在这种情况下,这个 SO 线程可能会有所帮助。
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();
请参阅以前称为 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) {
}