我想要执行的测试程序接受一个参数 - 一个文件名 - 并使用“这是一个修改版本”这一行创建该文件的副本。在新文件的顶部。当我单独测试这个程序时,它可以工作并生成一个新文件。
然后我写了程序来调用文件:
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);
}
}
上面的程序打印出“完成”,但它从未对我传入的文件进行修改。然后我将一些println()放在另一个程序中。当我单独运行该程序时,它打印出那些语句,但是当我尝试从上面的程序中调用它时,它没有。我该如何解决这个问题?
答案 0 :(得分:3)
您必须首先编译.java
文件并稍后启动它:
编译(包含main方法的类):
javac Tester.java
启动:
java Tester inputfilename.txt
答案 1 :(得分:1)
"java Tester.java inputfilename.txt"
应该是:
"java Tester inputfilename.txt"
但请帮助自己,并阅读(并实施)所有 When Runtime.exec() won't的建议。
这可能会解决其他问题。如果没有,它应该提供更多关于失败原因的信息。
然后忽略它引用exec
并使用Process
构建ProcessBuilder
。同时将String arg
分解为String[] args
以说明自身包含空格的参数。