2011-07-16 4 views
3

私はアノテーションの新機能です。 注釈を処理するためのサンプルannotationProcessorを作成しました。現在、コマンドラインスクリプト "-processor defaultproject.annotations.DefaultProcessor"を使用してそれを使用しています。myAnnotationProcessorをプログラムでソースコードで定義する方法は?

コード内からこのプロセッサを設定する方法はありますか?

おかげでたくさん モエイン

答えて

1

Processor interfaceは、この検出プロセスについて述べている:

ツールは注釈プロセッサを見つけるために、発見プロセスを使用し、 は、彼らが実行する必要があるかどうかを決定します。このツールを構成することにより、潜在的なプロセッサーのセットを制御することができます( )。例えば、 JavaCompilerの場合、実行する候補プロセッサのリストはset directlyであるか、 service-style lookupに使用されるsearch pathによって制御されます。他のツールの実装には、コマンドラインオプションなどの異なる構成メカニズムがあるかもしれません。 詳細については、特定のツールのドキュメントを参照してください。

defaultproject.annotations.DefaultProcessorのファイルを含むMETA-INF/services/javax.annotation.processing.Processorファイルをクラスパスに定義することをお勧めします。

(。あなたのツールチェーンと仮定するとこれは、コンパイラ/ツール/ IDEに依存し、最終的であるこのメカニズムをサポートしています。)

+0

とても残念 私はこのように、しようとしなかった: ArrayList processors processors.add(new MyDefaultProcessor()); JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); CompilationTask compilationTask = compiler.getTask(null, fileManager, null, null, null, null); compilationTask.setProcessors(processors); compilationTask.call(); しかし、私はしないでください現在渡されているパラメータを 'null'に置き換える方法を知っている。 ありがとうございました – Moein

+0

@ user847577 - David Biesackの[こちらのdeveloperWorksの記事(http://www.ibm.com/developerworks/java/library/j-jcomp/index.html)]を参照してください。それでもまだAPIを呼び出すことに問題がある場合は、おそらく新しい質問になるはずです。 – McDowell

+0

ありがとう私はそれを読むよ – Moein

関連する問題