これに対する私の最初の試みは、主なアプリケーションの一部として単に Jar を含めることでした。(Eclipse 3.7) これが嫌われていることは承知していますが、私はスタンドアロンの特殊なアプリを作成していて、バンドルを理解しようとすることについてあまり心配していませんでした。
これを実行しようとした:
Reflections r = new Reflections("mypackage");
Set<Class<?>> activeActions = r
.getTypesAnnotatedWith(MyAnnotation.class);
スタンドアロンのテスト アプリでは問題なく動作しましたが、RCP で試してみると、次の出力が得られました。
org.reflections.ReflectionsException: could not create Vfs.Dir from url,
no matching UrlType was found [bundleresource://1009.fwk651584550/]
either use fromURL(final URL url, final List<UrlType> urlTypes)
or use the static setDefaultURLTypes(final List<UrlType> urlTypes)
or addDefaultURLTypes(UrlType urlType) with your specialized UrlType.
だから私は答えを探して、私の問題をカバーしているが、それを解決するのに十分な詳細を私に与えていないこの質問を見つけました。最初のステップとしてリフレクション パッケージをバンドルに移動しましたが、実行するとまったく出力が得られません。リフレクション パッケージからのフィードバック。
my activeActions リストが空であるため、カスタム UrlType を作成するというソリューションの 2 番目の部分を実装していなかったため、スキャンが機能していません (期待していませんでした)。ただし、カスタム URL タイプを実装しましたが、まだ何も見つかりません。リフレクション パッケージからのフィードバックが表示されないため、理由がわかりません。何も見つからないだけです。
誰かが Reflections のログ記録を機能させるのを手伝ってくれて、UrlType ソリューションが機能しない理由を見つけてくれることを願っています。
編集
冗談です。バンドルを気にせず、リフレクション jar をクラスパスに押し込むだけで、カスタム UrlType が登録されていれば、スキャンが機能します。そして、ロギングはすべて機能します。なぜバンドルを気にする必要があるのですか?