将资源作为流获取时的NullPointer

时间:2017-01-23 18:59:06

标签: 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上,因此对文件路径的绝对引用是不切实际的。

编辑:对于将其标记为nullpointer的副本的人,我知道nullpointer是什么,显然它无法找到资源。至于为什么就是这种情况,我需要帮助搞清楚。

1 个答案:

答案 0 :(得分:2)

如果您的班级位于MyClass.class.getResourceAsStream("bar.txt"); MyClass.class.getClassLoader().getResource("main/project/foo/bar.txt"); ,那应该没问题。 如果您的资源位于项目中的不同文件夹而不是类使用:

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

一般来说:

MyClass.class.getResourceAsStream();

据我所知,这可以在同一个项目中的任何地方使用。 myactivities = [] from urllib.error import HTTPError for activity in client.get_activities(after = activities_from, before=activities_to): print(activity) print(activity.id, activity.start_date) try: temp = client.get_activity_streams(activity.id, types=types) except urllib.error.HTTPError: print("HTTPError") myactivities.append(temp) 相对于myClass的位置运行,你无法改变它。