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

Gradle不包括FXML和图像

公西运良
2023-03-14

我一直在寻找在build.gradle中包含FXML和图像的适当方法,以便将它们构建到JAR中。我看过这里,试过它,但它仍然不起作用。

抛出此错误:java.lang.NullPointerException:inputStream为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);

stacktrace表示loader.load(getClass().getResourceStream(“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
com
└───voidustries
    └───poly
        │   CustomFormatter.class
        │   Main.class
        │   PolyThreads.class
        │   SysTray.class
        │
        └───gui
                Controller.class
                GUI.class

在外面的树,他们都不在,我已经摆弄了几个小时,试图解决这个问题。如有任何帮助,将不胜感激。

如果需要更多信息,这里还有Github存储库

共有1个答案

堵乐
2023-03-14

您正在将xml文件放入一个名为src/main/java的文件夹中(提示:java dir用于java文件)

资源(例如xml、图像文件等)应该放在src/main/Resources

这是Maven和Gradle都遵循的标准约定。如果您想更改默认值,您可以,但首先我强烈建议您考虑遵循合理的约定。

    null
getClass().getResourceAsStream("layoutForm.fxml")

因此,如果希望将资源保留在原地,您将希望将src/main/java添加到资源文件夹,而不是src/main/java/com/voidustries/poly

 类似资料:
  • 我有一个Android应用程序,我已经能够用Gradle成功构建(使用Gradle0.7)。现在,我想设置Gradle来构建两个单独的.apk,一个只有ARM本机库,另一个只有Intel x86本机库。我尝试使用productFlavors,如下例所示: How to configure NDK with Android Gradle Plugin0.7 但是,在我的Gradle脚本中指定了pro

  • 未将hibernate-cfg.xml添加到war classes文件夹中。我使用以下脚本将web applcation部署到tomcat。复制后,当我启动tomcat时,错误enotFoundException下面的gettign:类路径资源[hibernate.cfg.xml]无法解析URL,因为它不存在

  • 我在Scala项目中使用了官方的Gatling Gradle插件,我发现了一个问题,其中包含了依赖项,如 不包括可传递依赖项。也就是说,我有一个Gatling模拟类,它扩展了中的一个类,而依赖于这个类。但是,当我尝试运行模拟时,会出现如下错误 当我查看Gradle依赖时,我将视为的依赖项。我的IDE(IntelliJ)在点击代码时也能识别它。 我试着在一页文档中搜索这个插件,但是我没有看到任何有用

  • 我正试图在Mac OS X El Capitan上使用创建一个虚拟环境。我已经用安装了Python 2.7.11,默认情况下包括、和。 然而,当我尝试安装以下说明在留档或从任何其他资源,我得到几个问题: 完成其工作后,可执行文件未放置在中,因此我需要手动它(这可能表明此步骤的安装有问题) 运行后,它会创建新的环境,从-安装中捕获Python 2.7.11,但是:文件夹中没有。这意味着,如果我尝试,