gpt4 book ai didi

Java 反射 - 类加载器检测新旧包中移动的类

转载 作者:行者123 更新时间:2023-12-01 12:22:45 26 4
gpt4 key购买 nike

我一直在摆弄类加载器和其他反射方法,似乎遇到了一个奇怪的错误。我曾经有一个文件,比如说“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 反射 - 类加载器检测新旧包中移动的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com