所以我有以下代码:
File txtFileDir = new File(MAIN_DIR + "test");
FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
};
File[] txtFiles = txtFileDir.listFiles(filter);
它在我使用安装了 Java 1.6 的 Windows 的开发机器上运行良好。但是,当我将类移植到将要运行的 unix 框并尝试运行它时,我在 FilenameFilter 行上得到一个 ClassNotFoundException。unix 盒子上也有 Java 1.6,所以我不知道问题出在哪里。这并不是什么大问题,因为有多种方法可以完成同样的事情,但我只是好奇是否有人对为什么它不能在 unix 机器上工作有任何想法。
我也尝试在 unix 机器上编译代码,以查看是否有任何区别,但没有。代码在 unix 机器上编译得很好,但我仍然收到同样的错误。有人有什么想法吗?
更新
我弄清楚了这个问题。显然,当我在其中编译包含该类的代码时,它创建了一个附加的 .class 文件,其中包含我的类的名称并在其上附加了 $1。所以我有Test.class 和Test$1.class。一旦我保留了 Test$1.class 文件,事情就会正常工作。我猜它需要第二个类文件,因为我创建了内部类?至少我认为这是一个内部阶级。
无论如何,谢谢大家的帮助。