我通過Runtime.exec(「javac MyFrog.java」)編譯java文件; 它說沒有錯誤,不輸出任何東西,但不創建MyFrog.class文件。 如果我編寫Runtime.exec(「javac」)它會輸出以輸出一些幫助文本。 所以我明白,程序正在工作,但不要創建類文件。權限沒問題。Runtime.exec不編譯java文件
回答
確保MyFrog.java
存在於工作目錄
沒有參數和javac的javac <缺少文件> .java將打印到stderr。如果他能夠看到從一個錯誤輸出,他應該能夠從另一個看到它? –
嘗試javac -verbose
,並確保您的類路徑設置正確。
我在評論中寫了關於-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();
}
爲什麼?是否需要更改環境以調用javac? –
@HemalPandya - 對不起!這是我的錯誤。 – adatapost
我還是不明白這是否能解決這個問題,因爲他能夠看到來自'javac'的輸出。 –
javac -verbose
應該給你更多的信息,特別是所在的目錄文件已創建。既然你能夠識別沒有任何參數的輸出幫助文本,我假設你正在捕獲進程的stderr,並且假設你對stdout也是這樣做的(儘管javac似乎沒有向stdout寫任何東西)。
你在哪裏檢查.class文件的存在?它與.java文件在同一個目錄中創建。如果MyFrog.java有包聲明,它將在包子目錄中創建而不是;因爲你必須使用-d
參數。
運行: [解析開始MyFrog.java] [解析完成19ms] [search源文件的路徑:。] [類文件的搜索路徑:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/resources.jar,...並繼續顯示類文件。] [總共171ms] – ardakshalkar
這意味着它仍然在創建'.class'文件。你需要等待它完成。使用'Process.waitFor()'。順便說一句你在讀循環中的過程輸出和錯誤嗎?你需要。 –
我做waitfor。我讀了一個錯誤流和輸出流。 如果我指定了錯誤的文件名,它會給我一個錯誤 – ardakshalkar
我總是會找到this資源回答有關Java exec的所有問題。
- 1. 編譯java文件
- 2. 編譯Java文件
- 3. 從不同目錄編譯java文件
- 4. Java不編譯$ CLASSPATH下的.class文件
- 5. Java編譯器不創建.jar文件
- 6. Eclipse不會編譯/運行java文件
- 7. 編譯hadoop java文件
- 8. 未編譯Java文件
- 9. eclipse中編譯java文件
- 10. Linux - 編譯java文件(hsqldb)
- 11. 編譯一些java文件
- 12. 反編譯java類文件
- 13. Java .War文件編譯
- 14. Ant排除文件編譯java文件
- 15. 使用Java編譯器API來編譯多個java文件
- 16. 編譯或不編譯.class文件
- 17. 編譯rpm而不編譯源文件
- 18. 的Java的Runtime.exec()
- 19. Java Runtime.exec(「sleep 180; ...」)
- 20. 如何在Java中編譯.java文件?
- 21. 使用Java程序編譯Java文件
- 22. 從java程序中編譯.java文件?
- 23. 以編程方式編譯java文件
- 24. 編程編譯.java文件,錯誤
- 25. 編譯具有不同文件名和類名的Java文件
- 26. JAVA - 不會編譯
- 27. 文件不會編譯name.java
- 28. 不能編譯gch文件
- 29. 不要編譯t4文件
- 30. Make不編譯好文件
你試過'javac -verbose'嗎? –