[英]Accessing Data inside of a .jar
我目前正在將一個程序放入.jar中,並且難以告訴它從哪里獲取數據。 數據位於項目中的文件內部,我確信它也位於jar中。 但我不知道如何獲得一個罐子的路徑。
我在網上找到了getClass().getClassLoader().getResourceAsStream()
方法來獲取輸入流到jar中,但由於我一直使用FileReaders
,所以我也不知道該如何處理它。
我非常感謝任何幫助。
編輯:
以下是目錄組織方式的圖片:
我的命令窗口顯示如果我運行.jar會發生什么。 第30行中的Nullpointer。我嘗試使用和不使用.getClassLoader(),它只是找不到它。 這是jar的內部: 再次,app是類文件所在的位置。因此,通過class.getResource ..我應該能夠在DataPackeg中搜索。 伙計,這是我的意思。
要理解的一個關鍵概念是jar文件中不存在文件 。 您必須將數據作為只讀資源獲取,並且需要使用與類文件路徑相關的路徑。
如果你仍然卡住,你可能需要告訴我們更多關於你當前程序,它的結構,你想要獲得的數據類型,它在jar文件中的位置以及你如何使用它的細節它。
例如,假設您的包結構如下所示:
所以類文件位於codePackage包中(這是Eclipse所以類文件存在於與java文件並行的Universe中),並且資源的位置在codePackage.images包中,但相對於類文件,它是images目錄,您可以像這樣使用資源:
package codePackage;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class ClassUsesResources {
private JLabel label = new JLabel();
public ClassUsesResources() {
try {
BufferedImage img = ImageIO.read(getClass().getResourceAsStream(
"images/img001s.jpg"));
ImageIcon icon = new ImageIcon(img);
label.setIcon(icon);
JOptionPane.showMessageDialog(null, label);
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
}
public static void main(String[] args) {
new ClassUsesResources();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.