日期:2014-05-20 浏览次数:20850 次
Runtime.getRuntime().exec("java CompiledClass");
------解决方案--------------------
给大家看一下我的测试代码吧
public class TestRuntime {
public static void main(String arg[]){
String s = null;
try {
Process process = Runtime.getRuntime().exec("java test.Test");
//Process process = Runtime.getRuntime().exec(".\\test.bat");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while((s=bufferedReader.readLine()) != null)
System.out.println(s);
process.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("finish");
}
}
其中test.bat的内容为java -cp ./bin test.Test &
test.Test只是System.out.println("Hello World~~~"); 而已
现在的问题是,执行Process process = Runtime.getRuntime().exec(".\\test.bat");可以得到如下输入
D:\program_design\zjcc_project\RuntimeExec>java -cp ./bin test.Test
Hello World~~~
finish
而执行Process process = Runtime.getRuntime().exec("java test.Test");只是得到
finish
------解决方案--------------------
你可以把process的errorStream取出来打印,应该是提示类找不到的错误的,你需要在Runtime.getRuntime().exec("java test.Test"); 执行命令里设置classpath。
------解决方案--------------------
手动在命令行运行一下
java test.Test
看看有无问题
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test { public static void main(String arg[]) { String s = null; try { Process process = Runtime.getRuntime().exec("java test.Test1"); // Process process = Runtime.getRuntime().exec(".\\test.bat"); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream())); while ((s = bufferedReader.readLine()) != null) System.out.println(s); process.waitFor(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("finish"); } } /* Hello World!!! finish */
------解决方案--------------------
当用exec方法调用java.exe或其它可执行程序的时候,一定要使用下面的格式:
Process process = Runtime.getRuntime().exec("cmd /C java -cp ./bin test.Test");
如果没有标红色的部分,是不会执行正确的
------解决方案--------------------
在一个方法内写一个运行那个线程的方法,在按钮下调用。
(我也不知道可以不,你试下吧。)
------解决方案--------------------
应该是7楼说的方法吧。
大体上不会错的,就看命令行怎么写了。