2009-02-03 69 views
3

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

回答

1

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

2

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

Runtime.getRuntime().exec("javac c:\java\abc.java -d c:\java\") 
Runtime.getRuntime().exec("java c:\java\abc") 
+0

的CreateProcess:C:\ j2sdk1.4.0 \ BIN \ HelloWorld的错误= 2 这是运行时异常消息 – Arun 2009-02-03 07:04:36

2

不要忘了:

  • 您可能需要读取一个java程序
  • 的标准输出/标准错误
  • 您可能必须在执行您的java命令前设置/更新环境变量和PATH

    创建过程:C:\ j2sdk1.4.0 \ BIN \ HelloWorld的误差= 2

装置的Win32的CreateProcess回报2作为错误代码时它不能找到所指定的命令;更具体地说,当命令没有在其查找路径上引用可执行文件时。

查看此SO question可获得更完整的“Runtime.getRuntime().exec()”代码,也可查阅this snippet

此代码创建一个shell(如在Runtime.getRuntime().exec("cmd /K")中),其中您在sdtin上编写任何要执行的命令。

此方法的兴趣在于重用shell进程以从前面的命令中受益:它执行'cd',然后执行'dir',后一命令将显示由该命令引用的目录的内容cd命令。

对于PATH设置也是如此,在使用javacjava之前。

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) { 
} 
2

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

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

您可以在上面的链接中找到更多代码。另见this question

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();