gpt4 book ai didi

java - Maven在jar文件的根目录下打包镜像

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:28 24 4
gpt4 key购买 nike

各位,

我正在使用 Eclipse 开发 Java 应用程序。 Maven 用于创建最终的 jar 文件。

在应用程序中,我为按钮使用了一些图像图标。按照 Internet 上的一些说明,我通过单击项目创建了一个“源”目录。我将源目录命名为“res”并将我的图像移动到该目录。


public static ImageIcon getIcon() {
if (isThisJarfile()) {
URL url = this.class.getResources("/res/myicon.png");
return new ImageIcon(url);
}else {
return new ImageIcon("/res/myicon.png");
}
}

当应用程序未打包为 jar 文件(非常适合调试)时,这可以正常工作。但是maven打包的时候看到图片放在了jar文件的根目录下。以下调用有效:

    URL url = this.class.getResource("/myicon.png");

我想知道我是否忽略了某些步骤。

请注意,我不必为图像的 pom.xml 做任何特别的事情。 Maven 自动拾取它们(除了它把它们放在错误的位置)。

预先感谢您的帮助。

问候,彼得

最佳答案

如果您遵循标准的 Maven 项目目录结构,那么最好将所有非 Java 资源放在 src/main/resources 下。例如,您可以创建一个子目录 images,这样完整的路径就是 src/main/resources/images。该目录将包含您所有的应用程序图像。

在打包应用程序时,应特别注意正确访问图像。例如,以下函数应该可以完成您需要的一切。

public static Image getImage(final String pathAndFileName) {
final URL url = Thread.currentThread().getContextClassLoader().getResource(pathAndFileName);
return Toolkit.getDefaultToolkit().getImage(url);
}

此函数可用作 getImage("images/some-image.png") 以加载图像目录中的 some-image.png 文件。

如果需要 ImageIcon,则只需调用 new ImageIcon(getImage("images/some-image.png")) 即可。

关于java - Maven在jar文件的根目录下打包镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10464816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com