工作,我有以下代碼:ClassLoader.getResource方法,()不從.jar文件
private final ImageIcon placeHolder = new ImageIcon(this.getClass().getClassLoader().getResource("Cards\\trans.png"));
但是一旦我的應用程序導出到文件.jar
這是行不通的。
工作,我有以下代碼:ClassLoader.getResource方法,()不從.jar文件
private final ImageIcon placeHolder = new ImageIcon(this.getClass().getClassLoader().getResource("Cards\\trans.png"));
但是一旦我的應用程序導出到文件.jar
這是行不通的。
你的「\ t」的被編譯爲一個標籤 - 你需要逃避它:
private final ImageIcon placeHolder = new ImageIcon(
this.getClass().getClassLoader().getResource("Cards\\trans.png"));
注意的雙反斜線。這當然不是唯一的錯誤 - 但它是一個開始...
實際上,我會用正斜槓來指定它。無論如何,這對Windows和基於Unix的操作系統都有效,它也適用於jar文件。我突出顯示雙反斜槓的唯一原因是總體上提高了字符串轉義的點。試試這個:
private final ImageIcon placeHolder = new ImageIcon(
this.getClass().getClassLoader().getResource("Cards/trans.png"));
接下來,確保你的文件,包括案例得到了確切的正確名。即使Windows文件系統通常不區分大小寫,jar文件也是如此。如果它實際上是「卡片」而不是「卡片」或「TRANS.png」而不是「trans.png」,它將不起作用。
是否有你在ClassLoader而不是僅僅是類上調用getResource的原因? (即不會getClass()。getResource()工作?) – JRL 2009-11-02 22:28:08
@JRL:如果您從類加載器調用它,它相對於jar文件的根而不是類。不過,您可以使用前導斜槓從調用Class.getResource獲得相同的效果。 – 2009-11-02 23:01:46
不工作怎麼樣?你會得到一個異常?它沒有渲染?請更具體的 – 2009-11-02 22:17:06
http://stackoverflow.com/questions/31127/java-swing-displaying-images-from-within-a-jar,由jjnguy發佈在BalusC – 2009-11-02 22:27:29
鏈接到的問題同學? http://stackoverflow.com/questions/1662686/images-will-not-work-in-a-jar-file – BalusC 2009-11-02 22:19:30