找不到 Gradle Java 9 模块

BeJ*_*Jay 4 java gradle java-9

我尝试使用 Gradle 在 Java 9 中开发一个小例子。但我没有找到制作工作运行配置的确切选项。我试图从这个小教程中复制正确的部分。但是 run 任务只是得到一个错误

java.lang.module.FindException:未找到模块 de.project.crawler

显然,我给 Gradle 的模块路径有误,但我不知道如何解决这个问题。

我的工作目录

project/
  crawler/
  |  src/
  |  |  main/
  |  |  |  java/
  |  |  |  |  de.project.crawler/
  |  |  |  |  |  Main.java
  |  |  module-info.java
  |  build.gradle
  |  settings.gradle
  build.gradle
  settings.gradle
Run Code Online (Sandbox Code Playgroud)

构建.gradle:

subprojects {
    afterEvaluate {
        compileJava {
            inputs.property("moduleName", moduleName)
            doFirst {
                options.compilerArgs = [
                        '--module-path', classpath.asPath,
                ]
                classpath = files()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

爬虫/build.gradle:

plugins {
    id 'java-library'
    id 'application'
}

ext.moduleName = 'de.project.crawler'
mainClassName = 'de.project.crawler/de.project.crawler.Main'

repositories {
    jcenter()
}

run {
    inputs.property("moduleName", moduleName)
    doFirst {
        jvmArgs = [
                '--module-path', classpath.asPath,
                '--module', mainClassName
        ]
        classpath = files()
    }
}

startScripts {
    inputs.property("moduleName", moduleName)
    doFirst {
        classpath = files()
        defaultJvmOpts = [
                '--module-path', 'APP_HOME_LIBS',
                '--module', mainClassName
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

爬虫/src/module-java.info

module de.project.crawler {
}
Run Code Online (Sandbox Code Playgroud)

爬虫/src/main/java/de.project.crawler/Main.java

package de.project.crawler;

public class Main {

    public static void main(String[] args) {
        System.out.println("Hallo");
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我在 IntelliJ 中尝试此操作,则一切正常。如果我在 cmd 上尝试这个,用 java9 编译并运行它,一切正常。如果我尝试“gradle run”,他会指出我在介绍中给您的错误。

BeJ*_*Jay 6

module-info.java 位于错误的位置。该文件必须src/main/java在模块中。这是正确的结构:

project/
  crawler/
  |  src/
  |  |  main/
  |  |  |  java/
  |  |  |  |  de.project.crawler/
  |  |  |  |  |  Main.java
  |  |  |  |  module-info.java
  |  build.gradle
  |  settings.gradle
  build.gradle
  settings.gradle
Run Code Online (Sandbox Code Playgroud)

感谢 Alan Bateman 的评论。