【问题标题】:Eclipse getResourceAsStream returning nullEclipse getResourceAsStream 返回 null
【发布时间】:2010-02-03 21:07:26
【问题描述】:

我无法通过 getResourceAsStream 来查找文件。我已将文件放在顶级目录、目标目录等中,并尝试在前面加上“/”。每次都返回null。

有什么建议吗?谢谢。

public class T {
 public static final void main(String[] args) {

  InputStream propertiesIS = T.class.getClassLoader().getResourceAsStream("test.txt");

  System.out.println("Break");
 }
}

【问题讨论】:

    标签: eclipse null resources


    【解决方案1】:

    把你的文件“test.txt”放到你的类的java文件所在的同一个目录(同一个包)。然后使用

    T.class.getResourceAsStream( "test.txt" );
    

    这是可行的,因为 eclipse 会自动将文件作为资源复制到类路径中。使用命令行时,您必须手动执行此操作。

    【讨论】:

    • 谢谢...请您解释一下为什么它不能与 T.class.getClassLoader().getResourceAsStream..
    • 如果你使用Class.getResourceAsStream( name )name在内部被解析。 “test.txt”转换为“my/package/test.txt”,“/test.txt”转换为“test.txt”。然后使用转换后的名称调用 ClassLoader.getResourceAsStream()。您的代码应该适用于这两种方法,但您必须检查文件“test.txt”是否位于正确的位置(在您的类路径中)。通过您的呼叫,您必须将“test.txt”放在您的顶级包目录中。
    【解决方案2】:

    您无需将这些文件添加到同一目录即可使其正常工作。

    当我创建一个新的包和源文件夹来保存我的 junit 测试时,我遇到了这种症状。测试将失败,因为 getResourceAsStream 返回 null。

    解决方法如下:

    在 Eclipse 项目资源管理器视图中右键单击类(在我的例子中是新的 junit 测试类)

    构建路径 -> 配置构建路径 -> Java 构建路径 -> 源选项卡 -> 添加文件夹

    选择保存文件的文件夹。

    【讨论】:

    • 如果您已经将该文件夹添加到构建路径中,请确保您没有排除您尝试使用的任何内容
    • 那是我的问题,src/main/resources 出于某种原因排除了**。删除解决了它。
    【解决方案3】:

    有时您需要明确告诉 eclipse 哪些类型的文件要从源文件夹复制到分发(类)文件夹。

    我有 Eclipse SDK,版本:3.7.1,内部版本号:M20110909-1335,Indigo 和这个 我做了以下更改。

    Project -> Properties -> Java Build Path -> Source (tab) -> Included (list item) -> Edit (button) 添加 */.txt 到现有的 */.java。

    【讨论】:

      【解决方案4】:

      还要确保您的文件不匹配 Preference>Java>Compiler>Building>OutputFolder>Filtered resources: 的任何模式。

      例如,如果您在该字段中设置 *.txt,则不会将 test.txt 获取到构建输出。

      【讨论】:

        【解决方案5】:

        将我的 /resources/ 文件夹放入我的 /bin/ 文件夹为我解决了这个问题。

        【讨论】:

          【解决方案6】:

          老问题,但我遇到了同样的问题,没有一个答案对我有用(或者我不明白)。

          在 Eclipse 中,刷新项目目录以使 Eclipse 知道新文件已添加到资源中。为此,右键单击包资源管理器视图中的项目(最顶层)目录,然后点击“刷新”。如果您从 eclipse 外部编辑现有资源文件,则相同:刷新以使 eclipse 知道所做的编辑。

          【讨论】:

            猜你喜欢
            • 2015-02-19
            • 1970-01-01
            • 2011-07-11
            • 2013-10-02
            • 2013-06-21
            • 1970-01-01
            • 2013-07-15
            • 2014-12-07
            相关资源
            最近更新 更多