我正在尝试使用 Class.getResource("rsc/my_resource_file.txt")
在 Eclipse 应用程序中加载文件。但是,无论我在 Eclipse 中做什么,类路径始终只包含一个 Eclipse 启动器条目:
.../eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.pkc
如何配置类路径?
注意:在运行时,我使用以下代码确定类路径:
URLClassLoader cl = (URLClassLoader) ClassLoader.getSystemClassLoader();
for (URL classpathURL : cl.getURLs()) {
System.out.println(classpathURL);
}
编辑:更多信息。
问题的根源在于 Class.getResource("rsc/my_resource_file.txt")
返回 null。在一个简单的 5 行“Java 应用程序”中做了一些小实验后,我认为我已经弄明白了,而且问题与类路径有关。显然,类路径的行为与“Eclipse 应用程序”略有不同。我通过 Class.getResource("/rsc/my_resource_file.txt")
解决了这个问题,谢谢 BalusC。
最佳答案
请退后一步。您的具体问题是资源返回 null
,对吧?你确定它的路径是正确的吗?正如你所拥有的,它是相对于当前类的包的。路径不应该以 /
开头以相对于包根目录吗?
URL resource = getClass().getResource("/rsc/my_resource_file.txt");
// ...
或者,您也可以使用上下文类加载器,它始终相对于类路径(包)根目录:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
URL resource = loader.getResource("rsc/my_resource_file.txt");
// ...
至少,Eclipse 启动器不是这里的罪魁祸首。
关于java - Class.getResource() 在我的 Eclipse 应用程序中返回 null?无法配置类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602289/