Mam pliki w folderze zasobów. Na przykład, jeśli trzeba uzyskać plik z folderu zasobów, robię tak:Dlaczego mój URI nie jest hierarchiczny?
File myFile= new File(MyClass.class.getResource(/myFile.jpg).toURI());
System.out.println(MyClass.class.getResource(/myFile.jpg).getPath());
Mam przetestowany wszystko działa!
Ścieżka jest
/D:/java/projects/.../classes/X/Y/Z/myFile.jpg
Ale, Jeśli utworzyć plik jar, używania, Maven:
mvn package
... a następnie uruchomić mój app:
java -jar MyJar.jar
że mam następujący błąd:
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)
... i ścieżki pliku jest:
file:/D:/java/projects/.../target/MyJar.jar!/X/Y/Z/myFile.jpg
Ten wyjątek dzieje, gdy próbuję uzyskać plik z folderu zasobów. W tej linii. Czemu? Dlaczego ten problem występuje w pliku JAR? Co myślisz?
Czy istnieje inny sposób uzyskania ścieżki do folderu zasobów?
Możesz rzucić okiem na to: http://stackoverflow.com/questions/10144210/java-jar-file-use-resource-errors-uri-is-not-hierarchical i zaakceptowana odpowiedź. – cyroxx