我面对的代码试图从与类本身的.class文件相同的目录中读取一些配置文件:
File[] configFiles = new File(
this.getClass().getResource(".").getPath()).listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".xml");
}
});
显然,这在某些情况下是有效的(也许是在Resin内运行代码时),但对于我来说,在Tomcat上运行它只会导致NPE,因为getClass().getResource(".")
返回null
。
一位同事建议创建另一个配置文件,其中包含所有“.xml”配置文件的列表(这确实可以在这里工作,因为它保持相当静态),并且不应该尝试在Java中做这样的事情。
尽管如此,我仍在想是否有一种漂亮的方法,可以普遍地获取给定.class文件所在目录的路径?我猜你可以通过以下方式从.class文件本身的路径获取它:
new File(this.getClass().getResource("MyClass.class").getPath()).getParent()
...但这是唯一/最干净的方法吗?
编辑:为了澄清,假设我们知道这是在应用程序中使用的,该应用程序以这样的方式部署,即MyClass.class将始终从磁盘上的.class文件中读取,并且资源也将在该目录中。