我的第一次尝试是简单地将罐子包含在我的主应用程序中。(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.
所以我四处寻找答案,发现这个问题涵盖了我的问题,但没有给我足够的细节来解决它。作为第一步,我将反射包移到一个包中,但是现在当我运行它时,我根本没有输出,我不知道这是因为 log4j 路径错误还是什么,但我现在没有来自反射包的反馈。
我的 activeActions 列表是空的,所以扫描没有奏效(我没想到会这样),因为我没有实现解决方案的第二部分,即创建自定义 UrlType。但是,我现在已经实现了自定义 URL 类型,但仍然没有找到任何东西,我不知道为什么,因为我看不到反射包的任何反馈,只是没有找到任何东西。
我希望有人可以帮助我让反射日志记录正常工作,然后找出为什么 UrlType 解决方案不适合我。
编辑
这是一个笑话,如果我不打扰 Bundle 并且我只是将反射 jar 推到我的类路径中,那么只要注册了自定义 UrlType,扫描就可以工作。并且记录一切正常。我为什么要打扰 Bundles?