为什么 Gradle 不使用 MRJAR 的 module-info.class?

问题描述

我目前正在使用 picocli 创建一个命令行应用程序。但是,Gradle 拒绝构建它并显示以下错误消息。

{project path}\src\main\java\module-info.java:2: error: module not found: info.picocli
    requires info.picocli;

这是我的 Gradle 依赖项:

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'

    implementation 'info.picocli:picocli:4.6.1'
}

Picocli 作为 MRJAR 托管,module-info.class 下有 meta-inf\versions\9,但 Gradle 似乎没有使用该文件。这是为什么?

解决方法

查看 this answer,您可能需要在项目 Java 插件上设置 inferModulePath 属性。