java—从maven项目运行jar时无法加载映像

mklgxw1f  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(372)

我看到这个问题已经被问过很多次了,但是我没有找到任何适合我的解决方案。
我正在尝试加载一个图像并在jdialog上显示它。当我从eclipse运行应用程序时,这是可行的,但是当我生成可执行jar(使用maven)并运行jar时,jdialog将显示为没有任何图像。
我把所有的类放在/src/main/java中,我的映像放在/src/main/resources中。当我打开maven生成的jar时,我可以找到我的图像,所以我猜问题不在于maven。
下面是我用来加载图像的代码(我在这里找到它:eclipse导出的runnable jar不显示图像):

URL url = myclass.class.getResource("/pic.gif");
    ImageIcon icon = new ImageIcon(url);

如果可以的话,这就是这个类的全部代码:

public class LoadingWindow {

    private JDialog dialog;

    public LoadingWindow() {
        this.dialog = new JDialog();
        this.dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        this.dialog.setTitle("Veuillez patienter");
        this.dialog.setSize(300, 200);
        URL url = LoadingWindow.class.getResource("/wait.gif");
        ImageIcon icon = new ImageIcon(url);
        JLabel imageLabel = new JLabel();
        imageLabel.setIcon(icon);
        imageLabel.setHorizontalAlignment(JLabel.CENTER);
        imageLabel.setVerticalAlignment(JLabel.CENTER);
        this.dialog.getContentPane().add(imageLabel);
        this.dialog.setLocationRelativeTo(null);
        this.dialog.setVisible(true);
    }
}

谢谢!

zlwx9yxi

zlwx9yxi1#

你的jar是可执行jar吗?通过maven生成的jar称为瘦jar,而不是可执行jar。当您想通过jar运行应用程序时,它必须是一个可执行jar。如果它不是可执行的jar,那么将下面的插件添加到pom.xml并构建项目。在您的目标文件夹中将生成2个jar。使用“jar with dependencies.jar”。

<build>
   <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <mainClass><Your fully qualified main class name></mainClass>
                </manifest>
              </archive>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
            </configuration>
          </plugin> 
   </plugins>

相关问题