Sto*_*rch 4 java continuous-integration build intellij-idea gradle
我一直在寻找将 FXML 和图像包含在build.gradlejar 中的正确方法,以便将它们构建到 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"
}
}
Run Code Online (Sandbox Code Playgroud)
这是 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);
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪说这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
Run Code Online (Sandbox Code Playgroud)
你可以看到,layoutForm.fxml并且Icon.png都出现在树
这是输出树:
com
????voidustries
????poly
? CustomFormatter.class
? Main.class
? PolyThreads.class
? SysTray.class
?
????gui
Controller.class
GUI.class
Run Code Online (Sandbox Code Playgroud)
在外面的树中,他们都缺席了,我已经折腾了几个小时试图解决这个问题。任何帮助将不胜感激。
此外,如果您需要更多这里是 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的包外sample文件和 Main.class 文件找不到它。
| 归档时间: |
|
| 查看次数: |
3330 次 |
| 最近记录: |