3

如何在 Runtime.getRuntime().exec() 的帮助下执行 java 程序。例如,我们将 java 文件路径设为 c:/java/abc.java。请帮我写代码。

4

6 回答 6

2

不要忘记:

  • 您可能需要阅读 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,就在使用javacor之前java

于 2009-02-03T08:44:41.300 回答
2

您应该使用ProcessBuilder而不是 Runtime。基本用法如下:

Process process = new ProcessBuilder(command).start();

您将在上面的链接下找到更多代码。另请参阅此问题

于 2009-02-03T08:58:36.047 回答
2

假设 abc.java 包含您要执行的主要方法:

Runtime.getRuntime().exec("javac c:\java\abc.java -d c:\java\")
Runtime.getRuntime().exec("java c:\java\abc")
于 2009-02-03T06:17:14.063 回答
1

你的意思是你想让一个Java程序运行另一个Java程序。在这种情况下,这个 SO 线程可能会有所帮助。

于 2009-02-03T06:17:01.037 回答
1
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();
于 2012-06-03T05:23:02.493 回答
0

请参阅以前称为 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) {
 }
于 2009-02-03T08:55:34.943 回答