当前位置: 首页 > 知识库问答 >
问题:

maven包资源文件夹下的src/main在最终罐

申屠昆
2023-03-14

默认情况下,Maven根据标准目录布局检查resources文件夹。尽管最后一个罐子有问题。

它最终添加了src/main文件夹之外的所有资源,这使得我的JavaFX应用程序变得愚蠢。

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中,图像文件夹不在主文件夹下。我曾经有资源文件夹外面的src文件夹,一切似乎都好,虽然我想遵循标准目录布局,所以我移动它。之前一切工作良好使用:

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

这是当前的目录布局:

你有什么建议?我应该加载不同的图像吗?......

只有代码现在工作class.getResourceAsStream("/main/Resources/Image/"ImageName));

可以告诉Maven如何在最终的jar上打包resources文件夹吗?

共有1个答案

陈朗
2023-03-14

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

如果您有src/main/resources/image/imageName。png,它将显示在/image/imageName中。jar文件中的png(在屏幕截图中,确实有该目录,所以看起来不错)。

您可以使用class.getResourceAsStream("/Image/ImageName.png")加载它。

 类似资料:
  • 我想知道为什么在Package Explorer的src节点中看不到以下文件夹 我可以作为项目的直接子项访问这些文件夹,它们存在于文件系统中。 我正在使用Spring工具套件(Eclipse的STS)。 也许我可以配置Eclipse?

  • 有没有办法说服Gradle接受文件夹中的资源文件(如XML文件)? 这将是伟大的,因为我需要把我的JavaFXXML文件放在那里。。。

  • 我有一个SpringWeb应用程序,它是作为maven工件a.war创建的。它有一个maven依赖项和一个工件B.jar。工件B的src/main/resources有一个文件测试。txt。我想读一下测试文件。来自神器A.war的txt。当我引爆B.jar时,我看到了测试结果。jar的根位于txt中。在A中,我尝试使用文件f=new ClassPathResource(“test.txt”)读取该

  • 我正在尝试访问src/main/Resources/XYZ/view文件夹中的xsd,其中XYZ/view文件夹是由我创建的,文件夹具有我需要进行xml验证的abc.xsd。 当我每次尝试访问xsd时,结果为null, 我试过了, 1) 2) 以及我为获取资源或类加载器等而进行的更多跟踪。 最后我得到了xsd, 文件文件 = 新文件(新类路径资源(“/src/main/resources/XYZ/

  • 我在一个文件夹中有一个robot资源文件,并且希望在执行Maven安装时同时包含该文件夹和robot资源文件。 项目>src>main>java... 在我的pom.xml文件中,我添加了: 当我执行Maven install时,我只看到jar中的robot资源文件,而看不到它的文件夹。我如何使它使机器人资源文件在文件夹内?我是Maven的新手,所以我希望得到任何指导。我看过这篇文章,但这篇文章没

  • Spring靴-1.4.1;IDE-IntelliJ 2016.3。EAP 我试图加载资源如下; 和 当我从IDE运行应用程序时,这两种方法都可以正常工作,但当我尝试将应用程序构建为war并将其部署到Tomcat上时,这两种方法都不起作用。 有人能帮我解决这个问题吗? 谢谢