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");