IntelliJ未在build.gradle指定主类时如何运行?终端如何模拟?
解决方法
方式一:用Gradle内置javaexec任务直接指定主类运行
不用修改build.gradle,终端执行如下命令,把com.yourpackage.Main替换成你的主类全限定名即可:
gradle javaexec --args="--main-class com.yourpackage.Main"
如果是多模块项目,需要加上模块路径,比如主类在core模块下:
gradle :core:javaexec --args="--main-class com.yourpackage.Main"
方式二:先构建项目,再结合Gradle类路径用java命令运行
- 先完成项目构建,确保编译出最新的类文件:
gradle build
- 获取项目运行时类路径并执行主类:
Linux/macOS
# 输出运行时类路径到临时文件 gradle -q printRuntimeClasspath > classpath.txt # 读取类路径并启动主类 java -cp "$(cat classpath.txt)" com.yourpackage.Main
Windows(命令提示符)
:: 读取运行时类路径并设置环境变量 for /f "delims=" %i in ('gradle -q printRuntimeClasspath') do set CLASSPATH=%i :: 启动主类 java com.yourpackage.Main
原理说明
IntelliJ点击运行按钮的逻辑是:先执行compileJava、processResources等Gradle构建任务,拿到编译后的类文件和依赖类路径,再启动指定主类。上面的两种方式就是直接模拟这个流程,不需要修改项目的Gradle配置。
内容的提问来源于stack exchange,提问作者Sharia Hussain
相关产品推荐
相关产品推荐

