Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以流形式获取资源时使用空指针_Java_Tomcat - Fatal编程技术网

Java 以流形式获取资源时使用空指针

Java 以流形式获取资源时使用空指针,java,tomcat,Java,Tomcat,我正试图从我的项目目录中访问一个文件,让我们调用它 src/main/project/foo/bar.txt 在类中MyClass 但当我这样做的时候: InputStream is = MyClass.class.getResourceAsStream("bar.txt"); 并对输入流执行任何操作,例如 is.toString(); 我得到一个NullPointerException 我也尝试过: MyClass.class.getResourceAsStream("/bar.txt"

我正试图从我的项目目录中访问一个文件,让我们调用它

src/main/project/foo/bar.txt
在类中
MyClass

但当我这样做的时候:

InputStream is = MyClass.class.getResourceAsStream("bar.txt");
并对输入流执行任何操作,例如

is.toString();
我得到一个
NullPointerException

我也尝试过:

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

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


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

如果您的类位于
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.getClassLoader().getResource(“包/文件名”);
据我所知,这适用于同一项目中任何地方的任何类。
MyClass.class.getResourceAsStream()
是相对于myClass的位置进行操作的,您不能更改它。

是什么让您认为
src/main/project/foo/bar.txt
以某种方式“捆绑”到您的类路径中?您如何运行应用的可能重复?你的类路径是什么?我标记的副本不仅仅解释了NPE是什么。它还提供了有关如何找出原因的提示。阅读后,您将更好地了解如何调试问题。您还将知道此问题中缺少哪些信息,我们需要帮助您。请查看是否有帮助。
MyClass.class.getClassLoader().getResource("package/<subpackage/>filename");