我正在使用Tomcat 7并且正在学习JSP。我正在尝试在具有特定扩展名的目录中构建文件列表。我找到了this tutorial,我有以下代码:
package winning;
import java.io.File;
import java.io.FileFilter;
import java.util.List;
import java.util.ArrayList;
public class Winning {
public List<String> getNames(String directory, String extension){
final String ext = extension;
File f = null;
File[] names;
List<String> results = new ArrayList<String>();
f = new File(directory);
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File pathname){
return true;
}
};
names = f.listFiles(filter);
for(File file : names){
results.add(file.getName());
}
return results;
}
}
Tomcat提供的异常是NoClasDefFoundError,但它报告在FileFilter filter = new FileFilter...
行抛出了ClassNotFoundException。
如果我摆脱了那个块,我的代码工作得很好,所以我有:
...
f = new File(directory);
// used to be code here
names = f.listFiles(/*no more filter*/);
...
它看起来对我来说基本上和示例的代码相同,但它不起作用。这个教程是否真的过时了,或者有没有办法在这里使用匿名类?
答案 0 :(得分:4)
编译包含匿名类的类时,会生成多个.class
个文件。例如,您将获得顶级课程Winning.class
和第一个匿名内部课程Winning$1.class
。
如果您只将Winning.class
放在/WEB-INF/classes
中,那么当代码尝试加载匿名类时,您会得到ClassNotFoundException
。