【问题标题】:In java, how do you retrieve images from a jar file?在 java 中,如何从 jar 文件中检索图像?
【发布时间】:2012-06-05 09:59:04
【问题描述】:

我在将我的 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();
    }

这很可能是一个简单的问题,因为我是编码初学者。当这些引用都在 jar 中时,我需要进行哪些更改才能使这些引用正常工作?

【问题讨论】:

标签: java reference jar


【解决方案1】:

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

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

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

【讨论】:

  • 这解决了,非常感谢!但现在它不能在 Eclipse 中运行,只能以 jar 形式运行......我可以重新排列文件或代码来解决这个问题吗?
  • 您只需要确保 /images 包含在构建中并且位于运行时类路径中。
  • 哦,笨蛋。好的,我也解决了。太感谢了!我花了几个小时试图完成这项工作..
猜你喜欢
  • 2014-11-09
  • 2022-07-01
  • 2016-10-17
  • 2021-11-03
  • 2015-05-15
  • 2021-08-06
  • 1970-01-01
相关资源
最近更新 更多