[英]How to bundle images in jar file
我做了一個Java應用程序,並將所有類捆綁在jar文件中。.我從netbeans運行項目,我的應用程序運行成功..但是,我將我的.jar文件放在另一個地方,然后從那里運行..我沒有我的應用程序使用的圖標..在代碼中,我從項目文件夾中存在的images目錄中獲取我的圖標。
現在,我想知道如何將這些圖像文件呈現給最終用戶(就像我們呈現.jar文件一樣)。
似乎這里有兩個問題:
在構建項目時,如何使NetBeans在生成的jar中包含圖像文件?
如何從罐子訪問圖像文件?
此答案適用於NetBeans 6.8並解決了兩個子問題。
假設您有一個基於螞蟻的Java應用程序項目。
這是項目的“文件”視圖
JP
+ images
+ test.jpg
+ nbproject
+ src
+ jp
+ Main.java
+ test
+ build.xml
+ manifest.mf
在Main.java中,您具有以下代碼:
public static void main(String[] args) throws IOException {
// find the file in the file system.. probably not a good idea
File f = new File("images/test.jpg");
System.out.println(f.getCanonicalPath()+" "+f.exists());
當您從NB內部運行此項目時,將得到以下輸出:
/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
當運行打包到jar中的代碼時,您將得到如下內容:
bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.txt false
為了在執行jar時獲得更好的效果,您需要執行以下操作:
將images目錄添加為項目的源根目錄 。
右鍵單擊該項目,然后選擇“屬性”項。 將出現一個對話框。
在對話框左側的列表中選擇“源”。 這將更改對話框右側面板的內容。
按下“源軟件包文件夾”表旁邊的“添加文件夾...”按鈕。 出現一個FileChooser。
使用此選擇器選擇圖像文件夾,然后按確定按鈕。 images文件夾的條目將添加到表中。
使用“項目屬性”對話框上的“確定”按鈕來接受更改並關閉該對話框。
更改您的代碼以使用Class.getResource() 。
public static void main(String[] args) throws IOException {
// find the file in the file system.. probably not a good idea
File f = new File("images/test.jpg");
System.out.println(f.getCanonicalPath()+" "+f.exists());
URL url = Main.class.getResource("/test.jpg");
System.out.println(url);
當您從IDE內部運行項目時,應該看到類似以下內容的內容:
/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg
當運行打包到jar中的代碼時,您將得到以下內容:
bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.jpg false
jar:file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar!/test.jpg
獲取test.jpg文件的URL后,可以使用ImageIcon(URL)創建圖標
對於NetBeans 6.9中的Maven項目,將文件放入“項目”的“其他源”文件夾中的“資源”中。
並且請確保您不會忘記開頭的“ /”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.