[英]Trouble exporting to runnable jar in java eclipse project with images
[英]Exporting Images with JAR in Eclipse (Java)
我一直在做一個需要外部圖像顯示的小項目。 我不熟悉如何使用Eclipse,這是我第一次嘗試導出已完成的項目,以便我可以與其他人共享。 現在,似乎我可以讓我的圖像顯示的唯一方法是,如果我在硬盤上分配一個特定的文件夾,並在代碼中使用圖像路徑。 我正在尋找一種方法來導出圖像作為我的JAR的一部分或作為同一個包的一部分,所以當我將這個程序發送給其他人時,我不必向他們發送一個單獨的存檔圖像文件夾。 我也有興趣了解我需要做什么才能讓我的代碼引用該包中的圖像,這樣它們就可以在沒有外部文件夾的情況下工作。 我已經閱讀過Eclipse中的某種包系統,但到目前為止還沒有找到如何使用它的運氣。 可以用一些解釋!
提前感謝願意給我兩美分的人。
我對此答案有用的東西如下:確保將圖像/文件放在同一個eclipse文件夾(或下面的子文件夾)作為源代碼。 我使用eclipse創建了一個文件夾“images_ignored”,將其添加到構建路徑但仍拒絕包含在我的JAR文件中(創建可執行JAR時)。
只需將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.