gpt4 book ai didi

java - Gradle 不包括 FXML 和图像

转载 作者:行者123 更新时间:2023-11-30 06:45:29 30 4
gpt4 key购买 nike

我一直在寻找将 FXML 和图像包含在 build.gradle 中的正确方法,以便将它们构建到 jar 中。我看here并试过了,但还是不行。

抛出这个错误:java.lang.NullPointerException: inputStream is null.

这是 build.gradle ( Github ):

group 'com.voidustries'
version '1.0-SNAPSHOT'

sourceSets {
main {
resources {
srcDirs = ["src/main/java/com/voidustries/poly"]
includes = ["gui/layoutForm.fxml"]
}
}
}

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.junit.platform:junit-platform-gradle-plugin:1.1.0'
}
}

apply plugin: 'java'
apply plugin: 'org.junit.platform.gradle.plugin'

repositories {
mavenCentral()
}

dependencies {
testCompile('org.junit.jupiter:junit-jupiter-api:5.1.0')
testRuntime('org.junit.jupiter:junit-jupiter-engine:5.1.0')
}

task wrapper(type: Wrapper) {
description = 'Generates gradlew[.bat] scripts'
gradleVersion = '4.3.1'
}

test {
testLogging {
events "passed", "skipped", "failed"
}
}

这是 GUI.java ( Github ):

FXMLLoader loader = new FXMLLoader();
FileInputStream fis = new FileInputStream(settings);
ResourceBundle resourceBundle = new PropertyResourceBundle(fis);
loader.setResources(resourceBundle);

Parent root = loader.load(getClass().getResourceAsStream("layoutForm.fxml"));
Platform.setImplicitExit(false);

堆栈跟踪显示 loader.load(getClass().getResourceAsStream("layoutForm.fxml")); 导致错误

这是源代码树:

com
└───voidustries
└───poly
│ CustomFormatter.java
│ Main.java
│ PolyThreads.java
│ SysTray.java

├───gui
│ Controller.java
│ GUI.java
│ Icon.png
│ layoutForm.fxml

└───img
Icon.png

你可以看到 layoutForm.fxmlIcon.png 都在树中

这是输出树:

com
└───voidustries
└───poly
│ CustomFormatter.class
│ Main.class
│ PolyThreads.class
│ SysTray.class

└───gui
Controller.class
GUI.class

在 out 树中,它们都不存在,我已经摆弄了几个小时试图解决这个问题。任何帮助将不胜感激。

此外,如果您需要更多 here是Github仓库

最佳答案

只是为任何不满意的人添加我的三分钱:

在 src/main/resources (Windows src\main\resources) 下,您似乎必须使资源文件的“位置”匹配用于运行 .class 文件的类路径。

我通过在 JavaFX gradle 项目中使用 .fxml 文件得出结论(除非更有知识的人另有说法)。

Main 类(包含 main())位于名为“sample”的包中...因此 .java 文件的路径是...\EclipseWorkspace\TestFXexp\src\main\java\sample\Main.java.

这似乎意味着您的 .fxml 文件必须放在此处:...\EclipseWorkspace\TestFXexp\src\main\resources\sample\config.fxml。

gradle installdist 然后会正确打包 .jar 以进行部署。展开 .jar,您会发现 config.xml 已与 .class 文件一起放在目录 sample\下...并且 Main.class 文件能够找到并使用它。

当我像这样放置 config.fxml 时: ...\EclipseWorkspace\TestFXexp\src\main\resources\config.fxml ... 它不起作用:然后将 config.fxml 放在外面.jar文件和Main.class文件中的sample包都找不到。

关于java - Gradle 不包括 FXML 和图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48941633/

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