2

JavaCompiler に関するこのコードをオンラインで見つけました

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

そしてcompiler.run(null, null, null、これらの 3 つの null がそれぞれデフォルトSystem.inの 、System.outおよび であることが示されていますSystem.err。しかし、これらの API が見つからないため、これらの値は実際に何をするのでしょうか? 誰か説明してくれませんか?

4

3 に答える 3

6

Javadoc はこちらです。

int run(InputStream in、OutputStream out、OutputStream err、String... 引数)

指定された 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 に接続するグローバル ストリームです。これら 3 つは、JVM の開始時にオペレーティング システムによって設定されます。それらをファイルにパイプすることも、コンソールに書き込む (読み取る) こともできます。

この場合、パラメーターを使用して、プログラムからのコンパイラー出力を検査します (単にユーザーに送信するのではなく)。ここで、「特定されていない形式で書き出された診断」の出番です。

于 2012-07-24T08:24:26.800 に答える
1

JavaCompilerはjavax.tools.JavaCompilerであり、 javax.tools.Toolインターフェイスを実装します。javax.tools.Tool#runメソッドについてはjavadocを参照してください。

于 2012-07-24T08:31:53.190 に答える
1

標準のシステム ストリームに依存する代わりに、独自のストリームを指定できます。たとえば、出力を何らかのファイルにリダイレクトしたい場合は、ファイル出力ストリームを作成し、#run 呼び出しに渡すことができます。

于 2012-07-24T08:26:18.397 に答える