今天我写了以下代码:
private void doScanner(String scanPackage) {
URL url = this.getClass().getClassLoader().getResource("/" + scanPackage.replaceAll("\\.", "/"));
File classDir = new File(url.getFile());
for(File file : classDir.listFiles()) {
if(file.isDirectory()) {
doScanner(scanPackage + "." + file.getName());
} else {
String className = scanPackage + "."+ file.getName().replaceAll(".class", "");
classNames.add(className);
}
}
}
结果for循环遍历的时候包空指针异常,追踪代码发现url的地址中有“%20”,该值代表空格。我在Eclipse中使用Tomcat使,指定serverLocations为Use Tomcat installation,而我的Tomcat安装在program files文件夹下,该文件夹的名字中含有空格,结果导致listFiles出现问题,返回结果为null,因此在for循环中报了空指针异常。
更改tomcat的安装路径,放到不带空格的文件夹下,解决了该问题。