java - Class.getResource() 在我的 Eclipse 应用程序中返回 null?无法配置类路径?

标签 java eclipse classpath

我正在尝试使用 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/

相关文章:

java - 包使用冲突: Import-Package with jasperreports

java - 如何在非 eclipse 项目中使用 eclipse Jar-in-Jar Classloader 在运行时加载 jar?

java - 如何创建一条线,其头部距其末端有一定距离 - java/awt

java - lib 中的 apache-cassandra-x.x.x.jar 在哪里?

java - Chrome 中的 Selenium Java 新选项卡 - 无法打开,始终在同一选项卡中打开 URL

java - HashMap单位转换程序无法识别key

java - Eclipse/Java 新手 : package not found now, 但那是昨天

java - 将 Eclipse 插件添加到 Eclipse RCP App

java - 调用gradle idea时如何将本地依赖放在第一位?

java - eclipse从哪个目录启动jvm?