2016-05-02 41 views
0

我有一個相當簡單的Java程序結構如下打算:(的IntelliJ)Maven的增加PNG資源罐子,但不使用它

/src/main/java/ (all the classes in here) 
/src/main/resources (marked as resource root in IntelliJ, one png file in here) 
/pom.xml 

我建我的Maven項目的方式是有點一個解決方法(因爲我無法讓IntelliJ的神器系統工作)。我有一個運行/調試配置,使用命令行構建項目:install(希望我解釋得很好)。

一切工作正常,除了包含.png文件。 奇怪的是,該文件實際上被添加到可執行文件jar,但不知何故最終的程序似乎根本沒有使用它。它通過以下方式訪問:

BufferedImage image = ImageIO.read(new File(getClass().getResource(url).toURI())); 

此外,最終的程序工作得很好,除了圖像在任何點都不可見。任何幫助?

編輯:png位於jar的根文件夾中,並且提供的URL是一個字符串,它只是png文件的名稱。我應該補充說,該程序在IntelliJ-Run環境(包括png)中正常工作,但不使用可執行文件jar

+0

哪裏在罐子裏?什麼是'url'的提供值? – Samuel

+0

我編輯了相應的原文。 – BlueTooth4269

回答

1

研究發現,在這裏工作了我的答案: Access .png image in .jar file and use it

只好用

img = ImageIO.read(MapObject.class.getResource(url));

,而不是

ImageIO.read(new File(getClass().getResource(url).toURI()));

因爲圖像是位於jar

+1

啊! toURI()是搞亂了事情。通常'getResourceAsStream()'將避免這樣的問題。 – Samuel