Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 Java 9模块_Java_Gradle_Java 9 - Fatal编程技术网

找不到Gradle Java 9模块

找不到Gradle Java 9模块,java,gradle,java-9,Java,Gradle,Java 9,我尝试用Gradle在Java9中开发一个小示例。但我找不到制作工作运行配置的确切选项。我试着从中复制正确的部分。但是run任务只会得到一个错误 java.lang.module.FindException:未找到模块de.project.crawler 显然,我给Gradle的模块路径有一个错误,但我不知道如何修复这个错误 我的工作目录 project/ crawler/ | src/ | | main/ | | | java/ | | | | de.p

我尝试用Gradle在Java9中开发一个小示例。但我找不到制作工作运行配置的确切选项。我试着从中复制正确的部分。但是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
build.gradle:

subprojects {
    afterEvaluate {
        compileJava {
            inputs.property("moduleName", moduleName)
            doFirst {
                options.compilerArgs = [
                        '--module-path', classpath.asPath,
                ]
                classpath = files()
            }
        }
    }
}
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
        ]
    }
}
爬虫程序/build.gradle:

subprojects {
    afterEvaluate {
        compileJava {
            inputs.property("moduleName", moduleName)
            doFirst {
                options.compilerArgs = [
                        '--module-path', classpath.asPath,
                ]
                classpath = files()
            }
        }
    }
}
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”,他会说明我在介绍中给你的错误

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的评论。

源代码布局看起来有点不寻常,我希望在模块源代码的顶级目录(src/main/java)中看到module-info.java。这就是问题解决程序。你想把它作为一个答案,我可以标记它吗?如果你正在寻找一个完全有效的解决方案检查我的答案