当前位置: 首页 > 知识库问答 >
问题:

getResource将始终返回null

桓风史
2023-03-14

这让我快疯了。我有一个简单的eclipse项目,其中有一个src文件夹和一个类。但我似乎无法让getResource找到它。我做错了什么?

import java.net.URL;

public class ContextTest {

    public static void main(String[] args) {
        URL url = ContextTest.class.getResource("/src/ContextTest.java");
        System.out.println(url);
    }
}

如果我右键单击类名,路径是testsprroject/src/ContextTest。java,根据运行配置中的classpath选项卡,默认的类路径是TestProject。

它不适用于/bin/ContextTest。java,ContextTest。java,ContextTest。java。


共有2个答案

李意致
2023-03-14

通过getResources()访问的资源必须在类路径上。您的Java文件将被编译并放置在类路径上。编译后的. java文件将被赋予. class的扩展名。

尝试

 URL url = ContextTest.class.getResource("ContextTest.class");
呼延鹏云
2023-03-14

当您使用ContextTest加载资源时。班getResource(“/…”) 前导路径被转换为绝对路径。这里绝对的意思是来自根包(即默认包)。

在Eclipse中,根包被认为是位于src文件夹下的包。编译后的类将被放置在bin文件夹下,如果您创建一个jar,您将看到您的根包不是src或bin文件夹,而是其中的任何文件夹。(例如com)。

因此,使用类绝对路径加载资源的正确方法是ContextTest。班getResource(“/ContextTest.java”) 。如果文件ContextTest。java位于编译类所在位置的根包中,那么它就会被找到并返回。

我希望这能澄清问题。

更新:从下面的评论来看,不清楚你想做什么。当您使用getResource()时,您不是在加载文件,而是从类路径加载资源。即使您的文件在jar文件中,这也可以正确地找到资源。因此,在上面的示例中,您试图作为资源加载的文件应该位于类路径中(即在bin文件夹下,因为当您从Eclipse内部执行时,这是类路径的根)。如果您试图加载类路径之外的文件,那么不要尝试加载资源,您可以使用文件。

 类似资料:
  • 问题内容: 我有这个测试应用程序: 当我从Eclipse运行它时,出现错误: 类路径(来自.CLASSPATH文件) 在我的c:\ project \ src文件夹中,我只有Test.java文件和包含pacman.png的’assets’目录。 我在做什么错以及如何解决? 问题答案: 我会这样: “ /assets/pacman.png”是绝对位置,而“ assets / pacman.png”

  • 当我尝试从eclipse中的资源目录加载一个图像时,我总是得到一个空指针异常(null pointer exception,NPE)。res文件夹位于项目目录中。这是我得到NPE的地方: 当我移除getClass().getReource()时,将返回图像: 当我打印res目录的URL时,我得到null: 谢谢

  • 问题内容: 我以前使用过媒体播放器,但从未遇到过此问题。每当我尝试使用MediaPlayer.create()时,该方法都会使我为null,并且无法播放声音。有什么我想念的吗? 我的sound.mp3在我的原始文件夹中,通过将声音拖到eclipse中的文件夹中,我将其放置在其中。请帮忙,因为我以前玩过声音,所以这真的困扰我:( 问题答案: 如果create() API由于某种原因失败,则返回nul

  • 我正在使用以下内容来获取此特定文件的URL,但它返回null。有人对该问题或执行此操作的替代方法有任何建议吗?

  • 问题内容: 尽管是有效的类,但以下代码会打印。 文档说方法返回 由 aClassName 命名的类对象,或者如果当前没有加载该名称的类。如果 aClassName 为,则返回。 我也试图获得当前的viewcontroller已加载但仍然得到 可能是什么问题? 更新: 即使尝试这样做,我仍然可以 问题答案: 该函数 确实 适用于(纯和Objective-C派生的)swift类,但是仅当您使用全限定名

  • 问题内容: 我觉得有点愚蠢,但它不起作用: 我有如果给定的用户是unicode。如果字符串中包含或,我想打印成功,但是我总是得到的结果。 问题答案: 隐式锚定到字符串的开头。如果要在字符串中搜索可以在字符串中任何位置的子字符串,则需要使用: 输出: 另外,Python Regexes不需要在开头和结尾都有一个。 最后,我添加到该行的末尾,因为我认为这就是您想要的。否则,您会得到类似的信息,但并不太