代码之家  ›  专栏  ›  技术社区  ›  GOXR3PLUS

Maven package resources文件夹位于最终jar的src/main下

  •  1
  • GOXR3PLUS  · 技术社区  · 7 年前

    默认情况下,Maven根据 Standard Directory Layout . 虽然最后的罐子有问题。

    enter image description here

    Caused by: java.lang.NullPointerException: Input stream must not be null
            at javafx.graphics/javafx.scene.image.Image.validateInputStream(Unknown Source)
            at javafx.graphics/javafx.scene.image.Image.<init>(Unknown Source)
            at main.java.com.goxr3plus.xr3player.application.tools.InfoTool.getImageFromResourcesFolder(InfoTool.java:734)
            at main.java.com.goxr3plus.xr3player.application.Main.start(Main.java:324)
            at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
            at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(Unknown Source)
            at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
            at java.base/java.security.AccessController.doPrivileged(Native Method)
            at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
            at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
            at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
            at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
            ... 1 more
    

    因为我正在从src/main/resources文件夹加载图像,如下所示:

    class.getResourceAsStream("/main/resources/image/"+ imageName));
    

    在最后一个jar中,images文件夹不在主文件夹下。我以前把资源文件夹放在外面 src 文件夹和一切似乎还好,但我想按照标准的目录布局,所以我把它。在一切正常工作之前,请使用:

    class.getResourceAsStream("/image/"+ imageName));
    

    这是当前的目录布局:

    enter image description here


    只有那个代码现在有效 class.getResourceAsStream("/main/resources/image/"+ imageName));

    你能告诉Maven如何在最终jar上打包resources文件夹吗?


    1 回复  |  直到 7 年前
        1
  •  1
  •   Thilo    7 年前

    jar文件看起来像预期的标准布局。

    如果你有 src/main/resources/image/imageName.png ,它会出现在 /image/imageName.png 在jar文件中(在屏幕截图中,您确实有这个目录,所以看起来不错)。

    你可以用 class.getResourceAsStream("/image/imageName.png")

    推荐文章