【发布时间】:2014-12-20 18:11:15
【问题描述】:
我一直在搞乱类加载器和其他反射方法,似乎遇到了一个奇怪的错误。我曾经有一个文件,让我们在一个包中说“ClassA.java”,让我们说“com.a”。但是,我不得不将它移动到包“com.b”。
现在,当我使用此代码获取两个包中的所有类时,
ClassLoader[] classLoaders = new ClassLoader[] { ClasspathHelper.contextClassLoader(), ClasspathHelper.staticClassLoader() };
String[] packagePrefixes = {"com.a", "com.b"};
FilterBuilder filterBuilder = new FilterBuilder();
for (String packagePrefix : packagePrefixes)
filterBuilder.includePackage(packagePrefix);
ConfigurationBuilder configurationBuiler = new ConfigurationBuilder()
.setScanners(new SubTypesScanner(false), new ResourcesScanner())
.setUrls(ClasspathHelper.forClassLoader(classLoaders))
.filterInputsBy(filterBuilder);
Set<Class<?>> allClasses = new Reflections(configurationBuiler).getSubTypesOf(Object.class);
“ClassA.java”类在 allClasses 集中出现了两次(因为类的不同,最终是不同的)
我尝试清理和删除/重新制作包和文件,但似乎认为该文件存在于两个包中。
当我将文件拖入“com.b”时,eclipse给了我正常的弹出窗口,我没有检查“更新非Java文件中的完全限定名称”。
我有一个 Maven 项目。有任何想法吗?谢谢!
【问题讨论】:
标签: java eclipse maven refactoring package