2015-01-13 70 views
0

我在java中出現了一個奇怪的問題。我想創建一個可運行的jar: 這是我唯一的類:在可運行jar中導出圖像不起作用

public class Launcher { 

public Launcher() { 
    // TODO Auto-generated constructor stub 
} 

public static void main(String[] args) { 
    String path = Launcher.class.getResource("/1.png").getFile(); 
    File f = new File(path); 
    JOptionPane.showMessageDialog(null,Boolean.toString(f.exists())); 

} 

} 

正如你可以看到它只是輸出,如果可以找到該文件或沒有。 它在日食下正常工作(返回true)。我已經使用image 1.png創建了一個源文件夾資源。 (資源文件夾被添加到構建路徑中的源代碼)

只要我將項目導出到可運行jar並啓動它,它就會返回false。 我不知道爲什麼。有人有一個想法? 在此先感謝

編輯:我跟着例如2創建資源文件夾:Eclipse exported Runnable JAR not showing images

回答

0

因爲圖像不是單獨的文件,但在包裝裏面的.jar。

使用代碼從流創建圖像

InputStream is=Launcher.class.getResourceAsStream("/1.png"); 
Image img=ImageIO.read(is); 
+0

我如何從InputStream到文件?換句話說,我怎麼看文件是否存在? – Bosiwow

+1

流不爲空 – StanislavL

+0

是的好吧,但我使用的是一個函數,期望PATH到圖像。我想我不能通過輸入流... – Bosiwow

0

嘗試用它來獲取圖像

InputStream input = getClass().getResourceAsStream("/your image path in jar"); 
2

如果你想從你的.jar文件使用getClass().getResource()加載資源。這將返回具有正確路徑的URL。

Image icon = ImageIO.read(getClass().getResource("image´s path")); 

要訪問罐子中的圖像,請使用Class.getResource()

我通常做這樣的事情:

InputStream stream = MyClass.class.getResourceAsStream("Icon.png"); 
if(stream == null) { 
    throw new RuntimeException("Icon.png not found."); 
} 

try { 
    return ImageIO.read(stream); 
} catch (IOException e) { 
    throw new RuntimeException(e); 
} finally { 
    try { 
     stream.close(); 
    } catch(IOException e) { } 
} 

還是你瞭解,請通過這個鏈接。

Eclipse exported Runnable JAR not showing images

+0

謝謝,我應該傳遞給「新文件」?爲了使代碼工作? – Bosiwow

0

兩個簡單的步驟:

1 - 添加的文件夾(其中圖像),以構建路徑;

2 - 使用此:

InputStream url = this.getClass().getResourceAsStream("/load04.gif"); 
myImageView.setImage(new Image(url)); 
相關問題