簡體   English   中英

Runtime.exec不編譯java文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM