"URI ist nicht hierarchisch" beim laden von Ressourcen
Brauche ich die URI einer Datei (die, die ich in das resources-Verzeichnis). Wenn ich
MyClass.class.getClassLoader().getResource(resource)
Bekomme ich
java.lang.IllegalArgumentException: URI is not hierarchical
Sonst, wenn ich ClassLoader.getSystemResource(resource)
es gibt null
.
- Können Sie die URI, die Sie verwenden?
- Datei:/Users/user1/Library/Caches/IntelliJIdea14/plugins-sandbox/plugins/plugin/classes/getrennt.png Das ist die URI bekomme ich beim ausführen aus der IDE. Es läuft, wie es sollte. Aber wenn ich Generiere mir ein Glas und versuchen Sie es zu starten, es funktioniert nicht.
- Versuchen
new File(MyClass.class.getResource(resource).getPath()).toURI()
odernew File(MyClass.class.getClassLoader().getResource(resource).getPath()).toURI()
- Es sollte relativ zu der oberen Ebene der jar-Datei, nicht ein absoluter. Ich bin mir auch nicht sicher, dass Sie ir müssen die "file:" - prefix.
- Siehe Verwandte q stackoverflow.com/questions/573679/...
- es funktioniert, aber es nicht in das image laden, wenn die Ausführung unter einem Glas.
- sollten Sie verwenden
getResourceAsStream()
- Ich kann es nicht. Wie konvertiere ich einen inputstream auf eine Datei/uri?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie laden die Datei aus einem jar? Wenn ja, das OS ist nicht in der Lage, um die form eines java -
File
Instanz, die aus einem Glas. In der Lage sein, um es zu laden, versuchen Sie, öffnen Sie es wie ein Strom. "filepath
" sollte mit einer "/
".Sollten Sie mit Hilfe
wenn die Ressource im jar/war-oder jede andere einzelne Datei-Paket für diese Angelegenheit.
Sehen, die Sache ist, eine jar-Datei ist eine einzelne Datei (wie eine Art von zip-Datei) mit vielen Dateien zusammen. Von Os ist pov, es ist eine einzige Datei, und wenn Sie wollen, um Zugriff auf einen Teil der Datei(Bilddatei) müssen Sie verwenden es als stream an.