[英]Runtime.exec doesn't compile java file
我通過Runtime.exec編譯java文件(“javac MyFrog.java”); 它表示沒有錯誤,不輸出任何內容,但不會創建MyFrog.class文件。 如果我寫Runtime.exec(“javac”),它輸出輸出一些幫助文本。 所以我理解該程序正在運行,但不創建類文件。 權限還可以。
javac -verbose
應該為您提供更多信息,特別是創建文件的目錄。 由於您能夠識別沒有任何參數的輸出幫助文本,我假設您正在捕獲進程的stderr並假設您也對stdout執行相同的操作(盡管javac似乎沒有向stdout寫入任何內容)。
你在哪里檢查.class文件的存在? 它與.java文件在同一目錄中創建。 如果MyFrog.java有一個包聲明,它將不會在包子目錄中創建; 因為你必須使用-d
參數。
確保MyFrog.java
存在於工作目錄中
嘗試javac -verbose
並確保您的類路徑設置正確。
您可以使用ProcessBuilder或Runtime.exec()方法創建新進程,
String []cmd={"javac","Foo.java"};
Process proc=Runtime.getRuntime().exec(cmd);
proc.waitFor();
或者使用ProcessBuilder
ProcessBuilder pb = new ProcessBuilder("javac.exe","-verbose", "Foo.java");
pb.redirectErrorStream(true);
Process p = pb.start();
p.waitFor();
InputStream inp=p.getInputStream();
int no=inp.read();
while(no!=-1)
{
System.out.print((char)no);
no=inp.read();
}
我總是發現這個資源回答了有關Java exec的所有問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.