在 build.gradle 中的 Gradle 6.3 中,mainClassName 可以这样设置,没有任何提示:
mainClassName = 'mod/app.Main'
在 Gradle 6.61 中,上述行导致:java.lang.module.InvalidModuleDescriptorException: Package mod.app not found in module
这可以通过删除 mainClassName 的模块部分来解决:
mainClassName = 'app.Main'
虽然异常得到解决,但 Gradle 仍然声明:No module was provided for main class, assuming the current module. Prefer providing 'mainClassName' in the following format: '$moduleName/a.b.Main'
我已经尝试过这种变化:
ext.moduleName = 'mod'
mainClassName = '${ext.moduleName}/app.Main'
到目前为止,我一直无法让其中任何一个工作。我可以将设置设置为“app.Main”,但我更喜欢使用 Gradle 喜欢的变体。这应该怎么做?
最佳答案
Gradle 6.3 不支持 JPMS,但 6.4+ 支持。所以我假设您使用的是第 3 方 gradle-modules-plugin .对于这个插件,您需要使用版本 1.7.0或更高版本以支持较新版本的 Gradle。
或者,删除插件并使用 native support在 Gradle 中。现在看起来你同时是两者的混合体。
关于java - 如何使用模块化 Java 在 Gradle 6.6 中设置 mainClassName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63934886/