簡體   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