Junit getResourceAsStream 返回空值

新手上路,请多包涵

不知道这怎么可能。我重新阅读了 getResourceAsStream,它总是返回 null。

 InputStream source = this.getClass().getResourceAsStream("test.xml");

Finder(使用 OS X 和 Eclipse)中紧挨着 test.java 的是 test.xml

我可以在 TextWrangler 中打开它并查看它是否存在,其中包含数据。

如果有任何不同,这就是 Junit 测试。我去查看了我们系统上现有的 Junit 测试,我以与工作示例完全相同的方式使用它(如文件所在的位置和代码本身)。

有什么细微差别可以阻止我假设 getClass() 返回正确的路径?

原文由 bobber205 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 533
2 个回答

getResourceAsStream() 正在使用 CLASSPATH,因此它将从 您的类所在的任何地方 加载,而不是您的源文件。

我怀疑您需要将 XML 复制到与 .class 文件相同的目录中。

原文由 Brian Agnew 发布,翻译遵循 CC BY-SA 2.5 许可协议

它没有在类路径上找到资源。如果您使用的是 junit 和 maven,请确保通过在 — 文件指令上添加 <include> 文件指令将资源复制到 <testResource> 部分

您还可以通过使用找到您的类在文件系统中的位置

this.getClass().getResource(".")

并检查资源是否存在

原文由 surajz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题