【问题标题】:java 9 modules with gradle not working: error: module not found: <module name>带有gradle的java 9模块不起作用:错误:找不到模块:<模块名称>
【发布时间】:2021-07-27 22:32:40
【问题描述】:

我做了一个极简的 java gradle 项目来测试 java 9 模块。

我只制作了 1 个模块并尝试根据第三方模块进行测试。但是当我尝试构建或运行项目时,我不断收到错误消息:

module not found: commons.validator

这是我的文件:

Demo.java"

public class Demo {
    public static void main(String[] args) {
        boolean result = EmailValidator.getInstance().isValid("abcd");
        System.out.println(result);
    }
}

模块信息.java:

module auth.server.main {
    requires commons.validator;
}

build.gradle:

plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    // for email validation
    implementation 'commons-validator:commons-validator:1.7'
}

/*this is to let gradle infer the locations of the modules*/
java {
    modularity.inferModulePath.set(true)
}

出了什么问题以及如何解决?

【问题讨论】:

  • 鉴于 Apache 对 groupId 约定的更改和 Bean Validation 的存在,如果 commons-validator:1.7 足够新来声明模块,我会感到惊讶。您期望commons.validator 存在的原因是什么?
  • @chrylis-cautiouslyoptimistic-commons.validator 是自动赋予模块的名称,可以通过命令jar --file=&lt;filepath&gt; --describe-module 找到,然后应用命名规则提取模块名称 该库运行良好但是当我在我的项目中定义模块信息时它停止工作,龙目岛也发生同样的情况,ide(intellij idea Ultimate)也找不到它

标签: java maven gradle java-platform-module-system


【解决方案1】:

这可能很简单。

plugins {
    id 'java'
    id "org.javamodularity.moduleplugin" version "1.1.1"
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'commons-validator:commons-validator:1.7'
}

检查一下:https://github.com/java9-modularity/gradle-modules-plugin

【讨论】:

  • 它起作用了,但是只有在我创建了一个新项目并将旧文件复制到其中之后,我不知道为什么,但至少它起作用了。让 gradle 使用模块更不用说 java 模块系统是一项艰巨的任务。
猜你喜欢
  • 1970-01-01
  • 2018-03-04
  • 2018-06-22
  • 2019-07-17
  • 1970-01-01
  • 2019-07-03
  • 2021-01-20
  • 1970-01-01
相关资源
最近更新 更多