为什么我的URI不是分层的?

8 浏览
0 Comments

为什么我的URI不是分层的?

我在资源文件夹中有一些文件。例如,如果我需要从资源文件夹获取文件,我会这样做:

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

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

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.(File.java:363)

...而文件的路径是:

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

当我尝试从资源文件夹获取文件时,会发生此异常。为什么?为什么在JAR文件中会出现这个问题?你有什么想法?

有没有其他方法可以获取资源文件夹的路径?

0