問題タブ [reflections]

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 投票する
6 に答える
60303 参照

java - リフレクション - Java 8 - 無効な定数型

Reflectionsライブラリに問題があります。特定のインターフェイスを実装するすべてのクラスを動的にロードしようとしています。これらのクラス(Java 8)でラムダ式を使用しない限り、すべてが正常に機能します(すべてのクラスがロードされます)。lib バージョンをアップグレードしようとしましたが、効果は同じでした (java.io.IOException: 無効な定数タイプ: 18)。

pom.xml の依存関係とビルド

除外なしは同じ効果です。

コード:

ラムダ式でクラスをロードするにはどうすればよいですか?

PS英語でごめんなさい:)

0 投票する
0 に答える
835 参照

java - Reflections API を使用して注釈付きクラスを検索する際の問題

Reflections API を使用して、実行時にカスタム アノテーションが付けられたクラスを見つけるのに非常に苦労しています。最終的な目標は、カスタム @Job アノテーションが付けられたプロジェクト内のすべてのクラスを見つけて収集し、それぞれをページに手動で追加することなく、1 つの場所から実行できるようにすることです。しかし、最初の検索を正しく機能させるのが非常に難しいと感じているため、プロジェクトを進めることができません。

私の現在のアプローチは、次を使用することです。

ここで、「ジョブ」は、検索しているすべてのジョブ クラスを含むパッケージであり、カスタム @Job アノテーションが付けられます。"jobs" は私のプロジェクトのベース パッケージですが、私のマシンの全体的な URL は ".../(project)/app/jobs" のようになります。この設定により、1 つの URL が検索されます。これは、構成オブジェクトに追加のフィルター「+jobs.*」を含む「.../(project)/app/」です。これは正しく機能しているように見えますが、セットにクラスが含まれていないため、明らかに何かが間違っています。

重要な場合、注釈は次のようにコード化されます。

アノテーション クラスは、探しているジョブ クラスと同じ「ジョブ」パッケージ内にあります。アノテーションが含まれているジョブ定義の例は次のとおりです。

この検索を意​​図したとおりに機能させるために変更する必要があるものが見つかりません。助けてくれてありがとう。さらに明確にすることができるかどうか教えてください。

編集: 問題は、Play Framework がそのクラスをロードする方法に関連していると思います。幸いなことに、フレームワークには独自の注釈検索機能が用意されているので、代わりにそれを使用しました。コメントによると、ここにリストしたコードは、実行するためのすべての依存関係がある場合に機能します。それをテンプレートとして自由に使用して、それがあなたにも役立つかどうか教えてください.

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

java - Java リフレクション - 特定のアノテーションとそのアノテーション要素を持つメソッドを探す

この注釈クラスがあるとします

オブジェクトを調べて、要素 x = 3、y = 2 である @MethodXY アノテーションを使用してメソッドを「検索」し、それを呼び出す方法はありますか?

この質問は、コア Java リフレクションを使用してすでに回答されています。これがReflections 0.9.9-RC1 APIを使用して、forループコードを使用してメソッドを反復処理する必要がないか、または指定されたパラメーターをキーまたは何かとして使用してメソッドを検索できる直接比較メソッドを作成することで実行できるかどうかを知りたい.

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

java - Googleリフレクションが注釈付きメソッドの型パラメータを解決しない

プロジェクトがローカルのクラスパスにあり、getClass().getClassLoader() を実行する場合にうまく機能する次のコードがあります。しかし、外部 jar から動的にロードしようとすると失敗します。

次のようなメソッド パラメーターの型である MyType の読み込みに失敗します。

このコードは、「org.reflections.ReflectionsException: could not get type for name MyType」で失敗します。

問題はクラスローダーにあると思います。すべてのタイプを取得するように jar をロードする別の方法はありますか?