![](/img/trans.png)
[英]executing a java program in another java program using Runtime.exec() function
[英]Executing one Java program from another using Runtime.exec(…)
我要执行的测试器程序接受一个参数-文件名-并用“这是修改的版本”行制作文件的副本。 在新文件的顶部。 当我单独测试该程序时,它会工作并生成一个新文件。
然后,我编写了程序来调用文件:
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime.exec("java Tester.java inputfilename.txt");
p.waitFor();
System.out.println("Done");
} catch(Exception e) {
System.out.println("Error");
System.exit(0);
}
}
上面的程序打印出“ Done”,但它从未对传入的文件进行修改。然后,我将另一个println()放在另一个程序中。 当我单独运行该程序时,它会打印出这些语句,但是当我尝试从上面的程序中调用它时,它并没有。 我该如何解决?
您必须先编译.java
文件,然后再启动它:
编译(包含main方法的类):
javac Tester.java
发射:
java Tester inputfilename.txt
"java Tester.java inputfilename.txt"
应该:
"java Tester inputfilename.txt"
但是帮自己一个忙,阅读(并实现) When Runtime.exec()不会的 所有建议。
那可能会解决其他问题。 如果不是,它应该提供有关失败原因的更多信息。
然后忽略它引用exec
并使用ProcessBuilder
构建Process
。 还要将String arg
分解为String[] args
以说明本身包含空格的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.