如果hello.jar與maven一起編譯,我想訪問位於文件夾/ file.file下的資源。但是我不知道如何讓目前的JAR我在的URL。請問在.jar中獲取該程序正在運行的文件的URL
file://./folder/file.file
正常工作,或者,
jar:file://./!hello.jar/folder/file.file
或有更簡單的方式來做到這一點?
(對不起,愚蠢的問題,我是新來的行家。)
如果hello.jar與maven一起編譯,我想訪問位於文件夾/ file.file下的資源。但是我不知道如何讓目前的JAR我在的URL。請問在.jar中獲取該程序正在運行的文件的URL
file://./folder/file.file
正常工作,或者,
jar:file://./!hello.jar/folder/file.file
或有更簡單的方式來做到這一點?
(對不起,愚蠢的問題,我是新來的行家。)
這個工作對我來說:
URL url = this.getClass().getProtectionDomain().getCodeSource().getLocation();
String jarPath = URLDecoder.decode(url.getFile(), "UTF-8");
jarPath
則包含jar文件的完整路徑,與該班級代碼位於。
請注意通過URLDecoder的「繞行」,否則如果jar文件位於包含空格的目錄中,則會得到包含%20的文件名。
謝謝,會嘗試。 – aLaserShark 2013-04-26 15:53:19
這對我有用。爲了在jar文件中獲得一個文件,我做了:'''''''''''''''jar jarPath = URLDecoder.decode(rawurl.getFile(),「UTF-8」); URL imgurl = new URL(「file://」+ jarPath +「folder/file.file」)' – aLaserShark 2013-04-26 16:40:32
您可以通過找到一個罐子的資源:
String resRelativePath = "folder/thing.jpg";
URL resUrl = this.getClass().getResource(resRelativePath);
這給了我一個錯誤,如下所示:String resRelativePath =「folder/file.file」; URL resUrl = this.getClass()。getResource(resRelativePath); System.out.println(resUrl.getPath());'我在最後一行得到一個nullpointerexception ...我可能錯過了一些愚蠢的東西 – aLaserShark 2013-04-26 16:39:22
哪裏資源位於何處?在'jar'中?你從哪裏找到maven的程序? – 2013-04-26 15:48:49
資源位於jar(在源代碼中,位於src/main/resources/folder/file.file下),我從src/main/java/package/package/package/file下的程序中找到該資源。 java的。嗯是的。 – aLaserShark 2013-04-26 15:52:50
在這種情況下JohnKlehm是正確的。 – 2013-04-26 16:08:27