簡體   English   中英

如何將圖像捆綁在jar文件中

[英]How to bundle images in jar file

我做了一個Java應用程序,並將所有類捆綁在jar文件中。.我從netbeans運行項目,我的應用程序運行成功..但是,我將我的.jar文件放在另一個地方,然后從那里運行..我沒有我的應用程序使用的圖標..在代碼中,我從項目文件夾中存在的images目錄中獲取我的圖標。

現在,我想知道如何將這些圖像文件呈現給最終用戶(就像我們呈現.jar文件一樣)。

似乎這里有兩個問題:

  1. 在構建項目時,如何使NetBeans在生成的jar中包含圖像文件?

  2. 如何從罐子訪問圖像文件?

此答案適用於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM