繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM