You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gradle管理的项目中用IntelliJ模块化运行Java主类

解决Gradle管理的IntelliJ项目中模块化运行Main类的问题

核心思路:通过Gradle配置驱动IntelliJ的运行行为

IntelliJ对Gradle项目的运行配置依赖于Gradle任务定义,只需让Gradle的run任务以模块化方式执行,就能保留右键Run的便捷性,同时实现模块化启动。

步骤1:确认项目的模块化基础

确保src/main/java目录下存在module-info.java,模块名需与代码中的声明一致:

module org.example.moduledemo {
    // 按需添加模块依赖、导出包等声明
}

步骤2:配置Gradle构建脚本

根据使用的DSL类型,修改项目根目录的构建脚本:

Groovy DSL(build.gradle)

plugins {
    id 'java'
}

java {
    // 启用模块化路径推断,让Gradle识别项目的模块结构
    modularity.inferModulePath = true
    // 指定模块名,必须与module-info.java中的名称完全匹配
    moduleName = 'org.example.moduledemo'
}

// 配置run任务采用模块化启动方式
tasks.named('run') {
    // 动态生成模块化启动参数
    jvmArgs = [
        '--module-path', classpath.asPath,
        '--module', "${java.moduleName}/${mainClass.get()}"
    ]
    // 清空classpath,强制使用module-path运行
    classpath = files()
}

Kotlin DSL(build.gradle.kts)

plugins {
    java
}

java {
    modularity.inferModulePath = true
    moduleName.set("org.example.moduledemo")
}

tasks.named<JavaExec>("run") {
    jvmArgs = listOf(
        "--module-path", classpath.asPath,
        "--module", "${java.moduleName.get()}/${mainClass.get()}"
    )
    classpath = files()
}

步骤3:同步Gradle项目

在IntelliJ中点击Gradle工具窗口的刷新按钮(或使用快捷键Ctrl+Shift+O/Cmd+Shift+O),让IDE同步最新的Gradle配置。

步骤4:使用右键Run功能

右键Main类的main方法选择"Run 'Main.main()'",IntelliJ会自动基于Gradle的run任务配置生成模块化启动命令,输出结果与命令行执行一致:

Main module org.example.moduledemo
Main module class org.example.moduledemo.Main
Module name org.example.moduledemo

备选:手动修改IntelliJ运行配置(临时方案)

若不想修改Gradle脚本,可手动调整生成的运行配置:

  1. 打开Run/Debug Configurations窗口(右上角运行按钮下拉菜单→Edit Configurations)
  2. 找到对应Main的运行配置,在VM options栏添加:
    --module-path $MODULE_DIR$/build/classes/java/main --module org.example.moduledemo/org.example.moduledemo.Main
    
  3. 清空Classpath栏的所有内容,保存后运行即可。

内容的提问来源于stack exchange,提问作者czerny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:11:19