java - 以流形式获取资源时的 NullPointer

标签 java tomcat

我正在尝试从我的项目目录访问一个文件,我们称之为它

src/main/project/foo/bar.txt

在类MyClass

但是当我这样做时:

InputStream is = MyClass.class.getResourceAsStream("bar.txt");

并使用 InputStream 执行任何操作,例如

is.toString();

我得到一个NullPointerException

我也尝试过:

MyClass.class.getResourceAsStream("/bar.txt");

MyClass.class.getResourceAsStream("./bar.txt");

由于该文件与我调用它的类不在同一个包中,我是否需要做一些额外的事情?该应用程序部署在 TomCat 上,因此对文件路径的绝对引用是不切实际的。

编辑:对于将其标记为空指针副本的人,我知道空指针是什么,显然它找不到资源。至于为什么会出现这种情况,我需要帮助弄清楚。

最佳答案

如果你的类(class)是 src/main/project/foo/MyClass.java MyClass.class.getResourceAsStream("bar.txt");应该没事。 如果您的资源位于项目中与类不同的文件夹中,请使用:

MyClass.class.getClassLoader().getResource("main/project/foo/bar.txt");

一般情况:

MyClass.class.getClassLoader().getResource("package/<subpackage/>filename");

据我所知,这适用于同一项目中任何位置的任何类。 MyClass.class.getResourceAsStream();相对于 myClass 的位置进行操作,您无法更改它。

关于java - 以流形式获取资源时的 NullPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41813679/

相关文章:

java - Swing 双击

java - Android - 我怎样才能实现这个谷歌地图动画?

java - Windows 中缺少 Java 进程的命令行输出

java - 如何以编程方式获取带有类和限定符的 bean?

java - HashMap 在第 12 个索引中插入第一条记录

java - httpd和tomcat之间的通信安全吗?

apache-flex - flex部署在tomcat上,在浏览器中打开时,是蓝色空白

java - 无法访问主目录 : Permission denied java. lang.IllegalArgumentException: 没有匹配接口(interface) SourceDataLine 的行

eclipse - 从 Github 导入 Ant 项目

tomcat - 一旦我的 Web 应用程序成功部署到 Tomcat 中,如何获得通知?