2

我在将我的 java 项目导出到 jar(来自 Eclipse)时遇到问题。我在 jar 中包含了一个名为images. 它包含我的项目使用的所有图像文件。问题是,我对这些图像的引用仅在项目不是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();
    }

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

4

1 回答 1

5

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

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

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

于 2012-06-04T03:05:19.383 回答