簡體   English   中英

在Eclipse中使用JAR導出圖像(Java)

[英]Exporting Images with JAR in Eclipse (Java)

我一直在做一個需要外部圖像顯示的小項目。 我不熟悉如何使用Eclipse,這是我第一次嘗試導出已完成的項目,以便我可以與其他人共享。 現在,似乎我可以讓我的圖像顯示的唯一方法是,如果我在硬盤上分配一個特定的文件夾,並在代碼中使用圖像路徑。 我正在尋找一種方法來導出圖像作為我的JAR的一部分或作為同一個包的一部分,所以當我將這個程序發送給其他人時,我不必向他們發送一個單獨的存檔圖像文件夾。 我也有興趣了解我需要做什么才能讓我的代碼引用該包中的圖像,這樣它們就可以在沒有外部文件夾的情況下工作。 我已經閱讀過Eclipse中的某種包系統,但到目前為止還沒有找到如何使用它的運氣。 可以用一些解釋!

提前感謝願意給我兩美分的人。

我對此答案有用的東西如下:確保將圖像/文件放在同一個eclipse文件夾(或下面的子文件夾)作為源代碼。 我使用eclipse創建了一個文件夾“images_ignored”,將其添加到構建路徑但仍拒絕包含在我的JAR文件中(創建可執行JAR時)。

Eclipse屏幕截圖顯示的是放置圖像

只需將images文件夾拖到Eclipse項目中,然后根據Eclipse版本選擇“復制新文件夾”或“復制文件和文件夾”,然后右鍵單擊圖像文件夾(在Eclipse中)和 - >構建路徑“使用作為源文件夾“。

如果它們在jar中,您可能需要將它們作為類路徑資源加載。 請參閱:getClass()。getClassLoader()。getResourceAsStream(...)

使用getResource()加載圖像:

ImageIcon qmarkIcon = new ImageIcon(getClass().getResource("images/mark.gif"));

如果您使用的是JDK 1.7或JDK 1.8,則可能需要使用NIO.2 API。

for (FileSystemProvider provider : FileSystemProvider.installedProviders()) {
    if ("jar".equals(provider.getScheme()))
        return provider.newFileSystem((new File(Start.class
                .getProtectionDomain().getCodeSource().getLocation().toURI()))
                .toPath(), new HashMap<String, Object>());
}

如果將此代碼輸入到返回java.nio.file.FileSystem的方法中,則可以調用該方法來獲取JAR文件的FileSystem。

要獲取訪問JAR文件中文件的路徑,可以使用以下方法,然后允許您讀取您可能需要的文件。

fileSystem.getPath("/images/image.gif")

如果您希望能夠在Eclipse中運行它,請確保使用try / catch IOException包圍對該方法的調用,並為您的FileSystem對象分配以下內容。

new File(Start.class.getProtectionDomain().getCodeSource().getLocation().toURI())
        .toPath().toString();

這將允許您運行程序,無論它是否壓縮為JAR文件。


我建議你習慣使用NIO.2,因為它是一個非常強大的API。

如果你添加一個文件夾來構建路徑,你可以在eclipse中檢索圖像,當你在jar文件中導出它時,只記得不要img/myImage.gif這樣的路徑引用圖像,但只能使用myImage.gif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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