加载资源时“URI不是分层的”

时间:2014-08-23 19:17:44

标签: java resources uri classloader illegalargumentexception

我需要一个文件的URI(我把它放在资源目录中)。如果我使用

MyClass.class.getClassLoader().getResource(resource)

我得到了

java.lang.IllegalArgumentException: URI is not hierarchical

否则,如果我使用ClassLoader.getSystemResource(resource),则会返回null

2 个答案:

答案 0 :(得分:1)

你是从jar里面加载文件的吗?如果是这样,操作系统无法从jar内部形成java File实例。要加载它,请尝试将其作为Stream打开。 " filepath"应该以" /"。

开头
MyClass.class.getClass().getResourceAsStream( filepath );

答案 1 :(得分:0)

您应该使用

  

的getResourceAsStream(...);

当资源捆绑为jar / war或任何其他单个文件包时。

看到的是,jar是一个单独的文件(有点像zip文件),它们将大量文件放在一起。从Os的pov,它是一个单独的文件,如果你想访问文件的一部分(你的图像文件),你必须将它用作流。