gpt4 book ai didi

java - 最终jar中src/main下的Maven包资源文件夹

转载 作者:行者123 更新时间:2023-11-30 05:59:48 24 4
gpt4 key购买 nike

默认情况下,Maven 根据Standard Directory Layout 检查资源文件夹。 。虽然最终的 jar 有问题。

enter image description here

它最终添加了 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));

这是当前的目录布局:

enter image description here

<小时/>

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

现在只有该代码可以工作 class.getResourceAsStream("/main/resources/image/"+ imageName));

可以以某种方式告诉 Maven 如何将资源文件夹打包到最终的 jar 上吗?

<小时/>

经过多次重新启动并清理项目和 Maven 更新项目...似乎是 Eclipse 相关问题...没关系,我会将这个问题留在这里,因为它可能对将来的某人有用:)

最佳答案

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

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

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

关于java - 最终jar中src/main下的Maven包资源文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52456572/

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