我撰寫了一個簡單的程式,我的影像在專案中加載得很好,但是一旦我將它匯出到 jar 檔案中,它們都沒有加載。我幾乎沒有創建工件或 jar 檔案的經驗。
專案結構:
專案:
src:
myclass1, myclass2...
res:
image1.png image2.png...
我使用 Toolkit.getdefaultToolkit 加載影像
在我的課堂上,我通過撰寫 myImage = toolkit.getImage("res/image1.png"); 在建構式中加載影像;這在專案中非常有效。在罐子里不起作用
我也試過 myImage = toolKit.getImage("image1.png"); 這在專案中或打開罐子時不起作用
我知道工具包不是加載影像的最佳方式,但我想知道如何在使用工具包時解決這個問題。
我什至嘗試使用我桌面上檔案夾的絕對路徑,它們再次在我的專案中正常加載,但在打開 jar 時它們沒有加載。請幫助我嘗試了一切。謝謝
(順便說一句)如果我在 intellij 中打開 jar 檔案,影像會加載,但如果我在 finder 中或從我的桌面打開 jar 檔案,它們不會。我希望能夠將完成的專案發送給某人
uj5u.com熱心網友回復:
該toolkit.createImage(String)方法接受一個字串,并將其解釋為路徑,在該路徑中查找檔案。jar 檔案中的條目本身不是檔案。因此無法使用此方法讀取 jar 中的影像檔案。
然而,這不是唯一的 createImage 方法。還有toolkit.createImage(URL),這就是你想要的。
SomeClass.class.getResource("something.png")
此運算式適用于任何類(Foo.class獲取 Foo 的類實體,并且所有類實體都具有該getResource方法),并將在完全相同的位置SomeClass.class(檔案)中查找命名條目。如果SomeClass.class當前存在于 jar 檔案中,那么它就會出現在那里。
因此,確保它img.png與您的類檔案位于同一個位置(確保它與其他檔案一起被震動),這樣就可以了。你也可以要求例如SomeClass.class.getResource("/foo/bar/img.png"); 然后這將從 SomeClass 所在的“根”查看。因此,如果您有一個 jar,那么如果您運行jar tvf thatjar.jar并得到:
....
/com/foo/yourpackage/SomeClass.class
....
/foo/bar/img.png
然后/foo/bar/img.png作業。
因此:一旦您知道將這些東西放在 jar 檔案中的位置:
toolkit.createImage(YourClass.class.getResource("image1.png"))
就是你要找的。
uj5u.com熱心網友回復:
PATH JRE 版本是否與編譯代碼相同?嘗試檢查您的 intellijIDEA 是否只是下載了另一個版本的 JDK。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/335824.html
