Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle JavaFX-java.lang.NullPointerException:需要位置_Java_Gradle_Javafx_Build.gradle_Executable Jar - Fatal编程技术网

Gradle JavaFX-java.lang.NullPointerException:需要位置

Gradle JavaFX-java.lang.NullPointerException:需要位置,java,gradle,javafx,build.gradle,executable-jar,Java,Gradle,Javafx,Build.gradle,Executable Jar,当程序使用Gradle构建并通过以下命令执行时,会生成空指针异常(注意:如果我在IntelliJ IDE中单击run,程序工作正常): java-jarmain-1.0.jar 我尝试了与本例类似的解决方案,但它无法解决问题 我还尝试了中提供的解决方案,但即使这样也无法解决问题 Gradle脚本包含了我先前查询中的解决方案- FXML文件(Sample.FXML)位于src/main/resources中 希望所面临的问题是明确的&关于如何解决这个问题,有什么建议吗 代码: 主要内容: 格拉德尔

当程序使用Gradle构建并通过以下命令执行时,会生成空指针异常(注意:如果我在IntelliJ IDE中单击run,程序工作正常):

java-jarmain-1.0.jar

我尝试了与本例类似的解决方案,但它无法解决问题

我还尝试了中提供的解决方案,但即使这样也无法解决问题

Gradle脚本包含了我先前查询中的解决方案-

FXML文件(Sample.FXML)位于src/main/resources中

希望所面临的问题是明确的&关于如何解决这个问题,有什么建议吗

代码

主要内容:

格拉德尔:

plugins {
    id 'java'
    id 'application'
    id 'idea'
}

group 'testJavaFx'
version '1.0-SNAPSHOT'

sourceCompatibility = JavaVersion.VERSION_1_10

repositories {
    mavenCentral()
}

sourceSets {
    main {
        resources {
            srcDirs = ["src/main/resources"]
            includes = ["**/*.fxml"]
        }
    }
}

dependencies {
    compile 'org.openjfx:javafx-base:11:win'
    compile 'org.openjfx:javafx-controls:11:win'
    compile 'org.openjfx:javafx-fxml:11:win'
    compile 'org.openjfx:javafx-graphics:11:win'

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

compileJava {
    doFirst {
        options.compilerArgs = [
                '--module-path', classpath.asPath,
                '--add-modules', 'javafx.controls',
                '--add-modules', 'javafx.fxml',
                '--add-modules', 'javafx.base',
                '--add-modules', 'javafx.graphics'
        ]
    }
}

run {
    doFirst {
        jvmArgs = [
                '--module-path', classpath.asPath,
                '--add-modules', 'javafx.controls',
                '--add-modules', 'javafx.fxml',
                '--add-modules', 'javafx.base',
                '--add-modules', 'javafx.graphics'
        ]
    }
}

def jarPackage(String jarName, String className, artifactVersion) {
    if (artifactVersion == "" || artifactVersion == null) {
        artifactVersion = "1.0.0"
    }
    return tasks.create("jar${jarName}", Jar) {
        baseName = jarName
        version = artifactVersion

        String pkgName = className.substring(0, className.lastIndexOf("."))
        String pkgDir = pkgName.replaceAll("\\.", "/")
        String clazzName = className.substring( className.lastIndexOf(".") +1 )

        from(sourceSets.main.output) {
            include "$pkgDir//**"
        }

        from {
            configurations.compile.collect {
                it.isDirectory() ? it : zipTree(it)
            }
        }

        manifest {
            attributes "Implementation-Title": "$clazzName",
                    "Implementation-Version": "$version",
                    "Main-Class": "$pkgName.$clazzName"
        }
    }
}

artifacts {
    archives jarPackage("Main", "pkg1.Main" , "1.0")
}

通过删除源集(存储库下面)并在任务中添加下面的代码来解决此问题。创建

from(sourceSets.main.resources) {
            includes = ["**/*.*"]
}

您是否检查了jar以查看是否添加了FXML文件?我添加了-from(sourceset.main.resources){includes=[“*/.*]”这似乎已经解决了问题。我不知道这是不是正确的方法。这将添加到构建脚本的创建任务部分。
from(sourceSets.main.resources) {
            includes = ["**/*.*"]
}