【发布时间】:2014-08-23 19:17:43
【问题描述】:
我需要一个文件的 URI(我把它放在资源目录中)。如果我使用
MyClass.class.getClassLoader().getResource(resource)
我明白了
java.lang.IllegalArgumentException: URI is not hierarchical
否则,如果我使用ClassLoader.getSystemResource(resource),它会返回null。
【问题讨论】:
-
你能提供你正在使用的URI吗?
-
file:/Users/user1/Library/Caches/IntelliJIdea14/plugins-sandbox/plugins/plugin/classes/disconnected.png 这是我从 IDE 运行时得到的 URI。它运行正常。但是当我生成一个 jar 并尝试运行它时,它失败了。
-
试试
new File(MyClass.class.getResource(resource).getPath()).toURI()或new File(MyClass.class.getClassLoader().getResource(resource).getPath()).toURI() -
它应该是相对于 jar 文件的顶层,而不是绝对路径名。另外,我不确定您是否需要“文件:”前缀。
-
我不能。如何将输入流转换为文件/uri?
标签: java resources uri classloader illegalargumentexception