1

在 build.gradle 中的 Gradle 6.3 中,mainClassName 可以这样设置,没有任何抱怨:

mainClassName = 'mod/app.Main'

在 Gradle 6.61 中,上述行导致:

java.lang.module.InvalidModuleDescriptorException:在模块中找不到包 mod.app

这可以通过删除 mainClassName 的模块部分来解决:

mainClassName = 'app.Main'

虽然异常得到解决,但 Gradle 仍然声明:

假设当前模块没有为主类提供模块。最好以以下格式提供“mainClassName”:“$moduleName/abMain”

我已经尝试过这种变化:

ext.moduleName = 'mod'
mainClassName = '${ext.moduleName}/app.Main'

到目前为止,我一直无法让其中任何一个工作。我可以将设置设置为“app.Main”,但我更喜欢使用 Gradle 喜欢的变体。这应该怎么做?

4

2 回答 2

1

在 6.3 中工作mainClassName = "$moduleName/app.Main"

工作在 6.4+


run {
    main = "$moduleName/app.Main"
}

于 2020-10-09T05:52:50.697 回答
1

Gradle 6.3 不支持 JPMS,但 6.4+ 支持。所以我假设您使用的是第 3 方gradle-modules-plugin。对于此插件,您需要使用1.7.0或更高版本来支持更新版本的 Gradle。

或者,删除插件并使用Gradle 中的本机支持。现在看起来你同时是两者的混合体。

于 2020-09-17T13:45:32.620 回答