java - 从引用的库中使用时未配置 Scanner TypeAnnotationsScanner
问题描述
我有一个类,用于org.reflections.Reflections
在类路径中的类中获取注释。
当我在同一个项目中使用它时,一切正常,但是当我将它导出为 JAR 并在不同的类中引用它时,我得到以下执行:
Exception in thread "main" org.reflections.ReflectionsException: Scanner TypeAnnotationsScanner was not configured
at org.reflections.Store.get(Store.java:39)
at org.reflections.Store.get(Store.java:61)
at org.reflections.Store.get(Store.java:46)
at org.reflections.Reflections.getTypesAnnotatedWith(Reflections.java:429)
这是代码片段:
System.out.println("Package to Scan: "+getPackageName());
final Reflections reflections = new Reflections(getPackageName(), new TypeAnnotationsScanner());
final Set<Class<?>> handlerClasses = reflections.getTypesAnnotatedWith(HandlerMapping.class,true);
我确实提供了一个TypeAnnotationsScanner
对象,但问题仍然存在。
注意:仅当上述代码被称为 jar 时,它才起作用。(我使用 maven-assembly 插件创建了一个胖罐子)
任何指针?
解决方案
2021 年 10 月 4 日更新:
此错误已在 0.10 版中修复。
上一个答案:
也许不是人们想听到的答案类型,但reflections
版本0.9.12
包含此处描述的错误:https ://github.com/ronmamo/reflections/issues/273
此 PR 中提供了错误修复(尚未合并):https ://github.com/ronmamo/reflections/pull/278
0.9.11
版本和版本之间的主要区别在于,删除0.9.12
了0.9.12
Guava 依赖以支持 Java 8 Streams API。
如果你需要在没有 Guava 传递依赖的情况下包含这个依赖,你可以看下一个项目:https ://github.com/aschoerk/reflections8
目前,最新可用的版本reflections8
是0.11.7
. 注意,reflections8
现在由于0.9.12
发布而被认为已过时,reflections
但他们的版本0.11.7
不包含此错误,并且此版本不依赖于 Guava。因此,一个可能的解决方案是切换到net.oneandone.reflections8:reflections8:0.11.7
.
推荐阅读
- jpa - 如何使用 JPA 调用使用 MySQL 中的多个表的简单选择过程
- pycharm - 无法保存设置:无法保存设置。请重启 PyCharm
- javascript - 在模板文字中设置 div 样式?
- python-3.x - 如何解决 Python 中 Styleformer 包的错误
- mongodb - 从包含引用的字段中获取数据
- filesystems - 如何列出 Java Card 文件系统?
- javascript - 文本编辑 Android Studio 中的换行
- .net - 关于 .net core 一对多关联
- python - 我可以获得 RGB 像素的颜色图(自定义)位置吗?
- javascript - 下面代码的时间复杂度是多少