找不到Gradle Java 9模块

时间:2018-02-17 13:02:23

标签: java gradle java-9

我尝试使用Gradle在Java 9中开发一个小例子。但是我找不到制作工作运行配置的确切选项。我试图从this little tutorial复制正确的部分。但是运行任务只会出错

  

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

的build.gradle:

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

履带/的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
        ]
    }
}

履带/ SRC / module-java.info

module de.project.crawler {
}

履带/ SRC /主/爪哇/ de.project.crawler / Main.java

package de.project.crawler;

public class Main {

    public static void main(String[] args) {
        System.out.println("Hallo");
    }
}

所以,如果我在IntelliJ中尝试这一切,一切正常。如果我在cmd上尝试这个,用java9编译并运行它,一切正常。如果我尝试'gradle run',他会说明我在介绍中给你的错误。

1 个答案:

答案 0 :(得分:2)

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

感谢Alan Bateman的评论。