使用Runtime.exec(...)从另一个Java程序执行一个Java程序

时间:2014-03-23 18:59:12

标签: java process 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);
    }
} 

上面的程序打印出“完成”,但它从未对我传入的文件进行修改。然后我将一些println()放在另一个程序中。当我单独运行该程序时,它打印出那些语句,但是当我尝试从上面的程序中调用它时,它没有。我该如何解决这个问题?

2 个答案:

答案 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以说明自身包含空格的参数。