簡體   English   中英

Java Compiler run()方法

[英]Java Compiler run() method

我在網上找到了關於JavaCompiler的代碼

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null,
             "src/org/kodejava/example/tools/Hello.java");

它說為compiler.run(null, null, null ,這三個空值分別是默認的System.inSystem.outSystem.err 。但這些值實際上做了什么,因為我找不到這些的API?有人可以解釋一下嗎?

Javadoc就在這里

int run(InputStream in,OutputStream out,OutputStream err,String ... arguments)

使用給定的I / O通道和參數運行該工具。 按照慣例,工具返回0表示成功,非零表示錯誤。 生成的任何診斷都將以某種未指定的格式寫入out或err。

 Parameters: in - "standard" input; use System.in if null out - "standard" output; use System.out if null err - "standard" error; use System.err if null arguments - arguments to pass to the tool Returns: 0 for success; nonzero otherwise 

對於System.in,System.out和System.err,這些是全局流(默認情況下)連接到STDIN,STDERR和STDOUT。 這三個是在JVM啟動時由操作系統設置的。 您可以將它們傳遞給文件,或者只是寫入(讀取)控制台。

在這種情況下,您將使用參數來檢查程序的編譯器輸出(而不是僅將其發送給用戶)。 這是“以某種未指定的格式寫出的診斷”的地方。

您可以指定自己的流,而不是依賴於標准的系統流。 例如,如果要將輸出重定向到某個文件,可以創建文件輸出流,然后傳遞給#run調用。

JavaCompiler是javax.tools.JavaCompiler ,它實現了javax.tools.Tool接口,請參閱javadoc for javax.tools.Tool#run方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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