Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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 getResourceAsStream()在Eclipse中返回null,但并不总是如此_Java_Eclipse_Inputstream - Fatal编程技术网

Java getResourceAsStream()在Eclipse中返回null,但并不总是如此

Java getResourceAsStream()在Eclipse中返回null,但并不总是如此,java,eclipse,inputstream,Java,Eclipse,Inputstream,我对此感到非常困惑。我以前一直在努力解决这个问题,但一旦我弄明白了,我就真的没有任何问题了。但现在,它又出现了。基本上,我有一些代码可以将文件作为图像读入。但是,只有某些图像是可读的。具体来说,我只能访问在重构后添加到项目文件夹中的图像,以包括源文件夹中的所有文件(它们以前在外部,但仍然包含在JAR中)。从那以后,我通过创建问题文件夹的副本、删除原件,然后有效地将副本重命名为与原件相同的名称来修复它,但我仍然好奇为什么会发生这种情况。有人有主意吗?应该用7zip、Winzip等打开罐子来验证它

我对此感到非常困惑。我以前一直在努力解决这个问题,但一旦我弄明白了,我就真的没有任何问题了。但现在,它又出现了。基本上,我有一些代码可以将文件作为图像读入。但是,只有某些图像是可读的。具体来说,我只能访问在重构后添加到项目文件夹中的图像,以包括源文件夹中的所有文件(它们以前在外部,但仍然包含在JAR中)。从那以后,我通过创建问题文件夹的副本、删除原件,然后有效地将副本重命名为与原件相同的名称来修复它,但我仍然好奇为什么会发生这种情况。有人有主意吗?

应该用7zip、Winzip等打开罐子来验证它

在同一个jar中,类可以使用带有URL的
getResourceAsStream
(路径分隔符
/
,而不是
\
)。图像位于同一包或子包路径中时的相对URL。绝对URL
“/…”
否则


重要的是路径区分大小写,而不是Windows文件名。这可能很棘手,因为如果文件也在jar之外的类路径上,那么在Windows(而不是Linux)上,一个错误的情况似乎是可以的。

好的
getResourceAsStream
在类路径上查找内容,所以如果您想读取不在类路径上的图像,应该使用另一种方法。或者,换句话说,您可以将文件夹添加到eclipse构建路径中(即使它们不包含Java文件),然后该目录中的资源将可供@rolfl同意的
getResourceAsStream()
使用,您可以将任何文件夹添加到类路径中,也可以将图像保存在jar中,当我重构时,Eclipse并没有自动将这些图像添加到类路径中,但它们是在我重新编译之后添加的吗?第二次添加它们似乎有点令人困惑。