编程语言
首页 > 编程语言> > java – 为什么我的URI没有分层?

java – 为什么我的URI没有分层?

作者:互联网

参见英文答案 > Java Jar file: use resource errors: URI is not hierarchical                                    6个
我有资源文件夹中的文件.例如,如果我需要从资源文件夹中获取文件,我喜欢这样:

File myFile= new File(MyClass.class.getResource(/myFile.jpg).toURI());             
System.out.println(MyClass.class.getResource(/myFile.jpg).getPath());

我已经测试过,一切正常!

路径是

/D:/java/projects/…/classes/X/Y/Z/myFile.jpg

但是,如果我创建jar文件,使用,Maven:

mvn package

…然后启动我的应用程序:

java -jar MyJar.jar

我有以下错误:

Exception in thread "Thread-4" java.lang.RuntimeException: ხელმოწერის განხორციელება შეუძლებელია
Caused by: java.lang.IllegalArgumentException: URI is not hierarchical
        at java.io.File.<init>(File.java:363)

…和文件的路径是:

file:/D:/java/projects/.../target/MyJar.jar!/X/Y/Z/myFile.jpg

当我尝试从资源文件夹中获取文件时,会发生此异常.在这一行.为什么?为什么JAR文件中存在这个问题?你怎么看?

有另一种方法,获取资源文件夹路径?

解决方法:

你应该使用

getResourceAsStream(...);

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

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

Documentation

标签:java,maven,jar,java-7,executable-jar
来源: https://codeday.me/bug/20190916/1808190.html