【问题标题】:Gradle Java 9 Module not found找不到 Gradle Java 9 模块
【发布时间】:2019-04-15 02:03:50
【问题描述】:

我尝试使用 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 {
}

crawler/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");
    }
}

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

【问题讨论】:

  • 源代码布局看起来有点不寻常,我希望在模块源代码的顶级目录(src/main/java)中看到module-info.java。
  • 这是问题解决者。您想将其发布为我可以标记的答案吗?
  • 如果您正在寻找一个完全可行的解决方案,请查看我的回答 here

标签: java gradle java-9


【解决方案1】:

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

感谢 cmets 的 Alan Bateman。

【讨论】:

    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 2020-02-21
    • 2018-06-22
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多