当前位置: 首页 > 知识库问答 >
问题:

如何使用模块化Java在Gradle 6.6中设置mainClassName

洪宏硕
2023-03-14

在Gradle 6.3中,内部html" target="_blank">构建。gradle,mainClassName可以这样设置,没有任何问题:

mainClassName = 'mod/app.Main'

在Gradle 6.61中,上面一行的结果是:

JAVAlang.module。InvalidModuleDescriptorException:包修改。在模块中找不到应用程序

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

mainClassName = 'app.Main'

解决异常后,Gradle仍然声明:

没有为主类提供模块,假设为当前模块。更愿意提供以下格式的“mainClassName”:“$moduleName/a.b.Main”

我已经尝试过这方面的变化:

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

到目前为止,我一直无法让这些工作。我可以使用“应用程序”的设置。但我更喜欢使用Gradle喜欢的变体。如何做到这一点?

共有2个答案

余铭晨
2023-03-14

在6.3main ClassName="$moduleName/app中工作。主"

在6.4中工作


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

齐航
2023-03-14

Gradle6.3不支持JPMS,但6.4支持。因此,我假设您使用的是第三方gradle模块插件。对于这个插件,您需要使用1.7版。0或更高版本,以支持较新版本的Gradle。

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

 类似资料:
  • 我试图使我的Java应用程序模块化,这样就会有一个核心的基础模块,一个客户端将不得不aqcuire,但他/她将能够添加额外的功能/插件,因为他们出现了,或者她的需求扩展。 我计划在客户端pc中有一个名为modules/plugins的子目录,任何插件应用程序都将作为一个目录包含在内。jar文件。当用户启动应用程序时,主模块将在最后一项中包含这些其他插件,例如,一个舞台将在同一场景中包含来自主模块和

  • 直到最近,我在我的Nuxt项目中使用了我自己的注册/登录实现,在成功注册/登录之后,我能够做到这一点$axios。setToken(token,'Bearer'),它将在axios reguests上全局设置授权头。现在我必须重构应用程序并使用Nuxt auth模块。但现在我似乎无法设置此标题。 这是我的身份验证配置: 我以为auth应该自动添加这个授权,因为它默认将设置为,但它没有。所以我试图明

  • 我有一个多模块Spring引导梯度项目。我在每个模块yml文件中都有指向数据库的属性:user、pass、URL。 这是一个可行的解决方案,但很难改变项目数据库。每次我想切换数据库用户或url,我必须改变10+yml文件。 如何避免这一点?

  • 问题内容: Deno超级酷。我早上看过它,现在想迁移到deno。我试图将现有的nodejs脚本移至deno。谁能帮助我使用deno中的npm模块。我需要esprima模块。这个有包https://github.com/denoland/deno_third_party/tree/master/node_modules,但是我不知道怎么使用。 问题答案: Deno提供了一个节点兼容性库,该库将允许使

  • 问题内容: 我手头有一个相当大的应用程序(几个MLOC),我想将其分解为更易于维护的单独部分。当前,该产品由大约40个Eclipse项目组成,其中许多项目具有相互依赖性。仅此一项就使连续构建系统不可行,因为每次检入都必须进行大量重建。 是否有“最佳实践”方法 确定可以立即分离的零件 直观地记录相互依赖性 解开现有代码 处理我们需要应用于库的“补丁”(当前通过将它们放在实际库之前的类路径中进行处理)

  • 多线程。在这种模式下,SQLite可以安全地由多个线程使用,前提是在两个或多个线程中不同时使用单个数据库连接。 序列化。在序列化模式下,SQLite可以安全地由多个线程使用,不受限制。