Class.getResource()在我的Eclipse Application中返回null?无法配置classpath?

But*_*840 6 java eclipse classpath

我试图用来Class.getResource("rsc/my_resource_file.txt")在Eclipse应用程序中加载文件.但是,无论我在Eclipse中做什么,类路径总是只包含Eclipse Launcher的一个条目:

... /日蚀/插件/ org.eclipse.equinox.launcher_1.2.0.v20110502.pkc

如何配置类路径?

注意:在运行时,我使用以下代码确定类路径:

URLClassLoader cl = (URLClassLoader) ClassLoader.getSystemClassLoader();
for (URL classpathURL : cl.getURLs()) {
    System.out.println(classpathURL);
}
Run Code Online (Sandbox Code Playgroud)

编辑:更多信息.

问题的根源Class.getResource("rsc/my_resource_file.txt")是返回null.在一个简单的5行"Java应用程序"中做了一些小实验,我以为我已经弄明白了,问题与类路径有关.显然,类路径与"Eclipse应用程序"的行为略有不同.我通过Class.getResource("/rsc/my_resource_file.txt")感谢BalusC 解决了这个问题.

Bal*_*usC 8

请退后一步.你的具体问题是资源返回了null,对吗?你确定它的路径是正确的吗?就像你一样,它与当前类的包相关.路径不应该从/相对于包根开始吗?

URL resource = getClass().getResource("/rsc/my_resource_file.txt");
// ...
Run Code Online (Sandbox Code Playgroud)

或者,您也可以使用上下文类加载器,它始终相对于类路径(包)根:

ClassLoader loader = Thread.currentThread().getContextClassLoader();
URL resource = loader.getResource("rsc/my_resource_file.txt");
// ...
Run Code Online (Sandbox Code Playgroud)

至少,Eclipse发射器不应该归咎于此.