問題タブ [annotation-processing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
7165 参照

java - デフォルトの注釈プロセッサ検出プロセスとは何ですか?

Maven Compiler プラグインのドキュメントには、次のことが記載されています。

注釈プロセッサ:

実行する注釈プロセッサの名前。JDK 1.6+ にのみ適用されます。設定されていない場合は、デフォルトのアノテーション プロセッサの検出プロセスが適用されます。

ここでのデフォルトの注釈プロセッサの検出プロセスは何ですか? この構成タグ以外に注釈プロセッサを設定する方法はありますか?

Annotation Processing Tool (apt) の使用を開始するドキュメントにデフォルトの検出手順が記載されていることがわかりましたが、これはプロセッサではなくファクトリ クラスで動作し、残念ながらJDKのtools.jarおよびパッケージを使用しています。com.sunこれはデフォルトの注釈プロセッサの検出プロセスですか?

0 投票する
1 に答える
167 参照

java - 同じ Processor インスタンスで異なるアノテーションを処理する

プロジェクトには 2 つの注釈があり、注釈付きのクラスを収集し、クラスの両方のリストに基づいてマージされた出力を作成したいと考えています。

Processorこれは 1 つのインスタンスのみで可能ですか? Processorインスタンスがすべての注釈付きクラスで呼び出されたかどうかを知るにはどうすればよいですか?

0 投票する
2 に答える
312 参照

java - APTで@XmlElement値にアクセスするにはどうすればよいですか?

コンパイル時にAPTを使用して注釈を処理していますが@XmlElement、一部のクラスで注釈の値を取得する必要があります。クラスは次のようになります。

nameの値を取得したいの@XmlElementですが、次のプロセッサコードでは取得できません。

0 投票する
2 に答える
1587 参照

android - Android プロジェクト + Eclipse + アノテーション処理

Android プロジェクトで Eclipse で注釈処理を有効にする方法を知っている人はいますか? 私は次のことをしました:

  1. プロセッサと、使用するプロセッサのクラス名を持つMETA-INF > servicesファイルを使用して Java プロジェクトを作成しました。
  2. Processor プロジェクトを .jar ファイルにエクスポートしました。
  3. Processor jar ファイルをフォルダー (/libs ではない) にインポートし、注釈処理を有効にするようにプロジェクト プロパティを構成しました ([プロパティ] > [Java コンパイラ] > [注釈処理])。

フォルダーから jar ファイルを削除すると、注釈プロセッサが見つからないため、Eclipse はプロジェクトでエラーを報告します。ただし、プロセッサが配置され、Eclipse が構成されている場合、処理は行われません。

標準の Java プロジェクトで同じプロセッサを使用すると、問題なく動作します。
誰かが私を助けることができますか?ありがとう

0 投票する
1 に答える
910 参照

ant - Ant:Antからのproc:onlyを使用したjavac?

javacコンパイルせずに注釈処理のみを呼び出すようにタスクを強制する方法はありますか?javacのドキュメント-proc:onlyによると、javacオプションはそのような動作を強制することになっています。

ただし、次のantビルドファイルのスニペットは次のとおりです。

とにかくプロジェクトをコンパイルします。<compilerarg>私は他のタグバージョン(たとえばlineの代わりに)を試しましvalueたが、何も役に立ちませんでした。

0 投票する
2 に答える
2119 参照

java - フィールド上の既存のJSR-303注釈にメッセージ属性を追加するための注釈処理

次のようなJSR-303制約で注釈が付けられたデータ転送オブジェクトがあります...

注釈処理を使用してmessage、値がに等しい属性で各JSR-303制約を強化しようとしていconstraint-name.class-name.member-nameます。

たとえば、上記を使用すると、locationNameフィールドの注釈に対して最終的に生成される出力は次のようになります...

なんで?カスタム検証メッセージングを完全に制御したいからです。私は何百ものデータ転送オブジェクトを持っており、それらを次のようなもので処理したいと思っています...

上記のアプローチが実行可能かどうか、または他の何かを試す必要があるかどうかを知りたいです(それはもっと簡単かもしれません)。さらに、可能であれば、上記のプロセッサの//TODOセクション内に何を実装するかについての指示。これまで相談してきました...

0 投票する
1 に答える
3421 参照

java - javassist バイトコード操作と Maven コンパイルの統合

javac/aspectj コンパイラでコンパイルする Maven プロジェクトがあります。
コンパイルされたクラスを操作してそれらに追加するjavassistプログラムをコンパイルしたクラスで実行したい。
「プロセスクラス」フェーズを使用してツールを実行することを考えました。
私の質問は、「ターゲット/クラス」で作成されたクラスファイルをjavassistで反復処理して、後でロード、修正、保存できるようにする最良の方法は何ですか.
もう 1 つの要件は、テスト クラスでもツールを実行することです。
同様のことを行うオープン ソース プロジェクトがある場合は、実際の例を参照してください。
ありがとう、
アヴナー

0 投票する
2 に答える
322 参照

java - JSR308「instanceof@MyAnotations」ランタイムチェックを実装するコードを生成します

JSR 308は、Javaに型注釈を追加することを提案しています。承認後、プログラマーはJavaタイプが現在許可されている場所であればどこでも注釈を追加できるようになります。これには、メソッド/フィールド/ローカル/パラメーターの装飾だけでなく、コンストラクター呼び出し、型キャスト、そして最も不思議なことにインスタンスのチェックも含まれます。Checker Frameworkは、 JSR 308を使用し@NonNullて、オブジェクト型や文字列などの型修飾子を実装@Regexします。

チェッカーが行うことは、コードを静的に分析することだけです。これがコンパイル時のチェックです。それはいいです。しかし、私が欲しいのは、実行時にチェックを実行できるメカニズムです。次のように宣言できます。

私も書くことができます:

ただし、これはと同じx instanceof Stringで、実行時チェックは実行されません。小切手で任意のコードを実行してブール値を返すことができるコンパイル時アノテーションプロセッサまたはランタイムバイトコードマニピュレータが必要です。instanceofこれはJavaで可能ですか?

0 投票する
2 に答える
466 参照

java - TypeMirrorオブジェクトから型記述子(JNI式)文字列を取得する方法(アノテーション処理)

次のような文字列を取得したいと思います。

(JNI スタイルの型/メソッド記述、または型記述子と呼ばれる)

javax.lang.model.type.TypeMirror内のオブジェクトからAnnotationProcessorTypeMirrorオブジェクトを解析し、上記のような文字列を生成する便利なメソッドまたはライブラリはありますか?

org.objectweb.asm.TypeString を使用して、型記述子文字列からオブジェクトを構築したいと思い ます。

0 投票する
1 に答える
825 参照

java - メタアノテーションを使用してアノテーションプロセッサをトリガーします

注釈でトリガーされる注釈プロセッサを構築しましたcom.foo.FooEntity。その注釈プロセッサもトリガーするステレオタイプをさらに作成できるようにする必要があります。

たとえば、コントローラーもこの注釈プロセッサーをトリガーする必要があります。@FooEntity注釈を付ける方法はないかと思います。何かのようなもの:

そして、これを使用して、このクラスがアノテーション処理をトリガーするようにします

もちろん、ここでの考え方は、注釈プロセッサ自体に触れることなく、新しいステレオタイプを追加したいということです。