【问题标题】:Maven packaging images in the root of the jar fileMaven打包镜像在jar文件的根目录下
【发布时间】:2017-03-28 15:14:09
【问题描述】:

伙计们,

我正在使用 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 自动拾取它们(除了将它们放在错误的位置)。

提前感谢您的帮助。

问候, 彼得

【问题讨论】:

    标签: java eclipse maven


    【解决方案1】:

    如果您遵循标准的 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")) 即可。

    【讨论】:

    • 这在罐子内外都非常有效。非常感谢您的帮助。问候。彼得
    • 但是为什么要把它放在资源而不是webapp下呢?将其放在资源下会将图像放在 WEB-INF 下的类文件中,这是不对的,因为这些是静态文件。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      我的 favicon 位于 maven 项目的根目录中,但它没有包含在生成的战争中。通过大量谷歌搜索,我从 maven 帮助页面获得了解决方案。

      <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.0.0</version>
      <configuration>
        <webResources>
          <resource>
              <directory>${project.basedir}</directory>
            <!-- the list has a default value of ** -->
            <includes>
              <include>favicon.ico</include>
            </includes>
          </resource>
        </webResources>
      </configuration>
      </plugin>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        • 2012-05-07
        • 1970-01-01
        • 1970-01-01
        • 2019-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多