在java中,如何从jar文件中检索图像?

时间:2012-06-04 03:03:03

标签: java reference jar

我在将java项目导出到jar(来自Eclipse)时遇到了问题。我在一个名为images的jar中包含了一个文件。它包含我的项目使用的所有图像文件。问题是,我对这些图像的引用仅在项目不是的jar形式时才有效。我无法弄清楚为什么,我想知道是否需要更改图像引用的措辞。这就是我正在做的参考图像:

    URL treeURL = null;
    Image tree = null;
    File pathToTheTree = new File("images/tree.png");
    try {
        treeURL = pathToTheTree.toURL();
    } catch (MalformedURLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    try {
        tree = ImageIO.read(treeURL);
    } catch(IOException e) {
        e.printStackTrace();
    }

很可能这是一个简单的问题,因为我是编码的初学者。当这些引用都在一个罐子里时,我需要做些什么才能使这些引用工作?

1 个答案:

答案 0 :(得分:5)

确实很简单:您使用getResource()java.lang.Class中的各种java.lang.ClassLoader方法。例如,在您的应用中,您可以写

treeURL = getClass().getResource("/images/tree.png");

这将在jar文件根目录的images目录中找到该文件。关于getResource()方法的好处是,无论文件是否在jar中,它们都能正常工作 - 如果images目录是磁盘上的真实目录,这仍然可以工作(只要images的父级是您的类路径的一部分。)