我的团队正在开发一些资源,这些资源将在某些Web项目中作为jar部署。在jar中有一个类可以找到一些使用反射加载并放入映射的客户端类,但是我们在测试期间遇到了一个奇怪的问题,因为在某些客户端中,检索这些类的方法只返回一个空列表!
所以,我们有3个客户端(计算在开发中使用的站点),其中2个工作正常,但其中一个没有。奇怪的是在开发站中它在客户端工作得很好但是当我试图用JUNit测试它时,我的意思是,从组件内部扫描类本身我们有同样的问题,一个空列表。
以下是有时可行的代码,如何改进以便始终有效?
public final static List<Class<?>> find(final String scannedPackage) {
final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
final String scannedPath = scannedPackage.replace(DOT, SLASH);
final Enumeration<URL> resources;
try {
resources = classLoader.getResources(scannedPath);
} catch (IOException e) {
throw new IllegalArgumentException(String.format(BAD_PACKAGE_ERROR, scannedPath, scannedPackage), e);
}
final List<Class<?>> classes = new LinkedList<Class<?>>();
while (resources.hasMoreElements()) {
final File file = new File(resources.nextElement().getFile());
classes.addAll(find(file, scannedPackage));
}
return classes;
}