Kotlin Gradle报错:找不到或无法加载主类问题求助
解决Spring Boot Kotlin项目可执行Jar运行时"找不到主类"的问题
嘿,我来帮你搞定这个问题!你遇到的Could not find or load main class报错,大概率是Gradle配置没跟上Spring Boot和Kotlin的打包要求,我给你一步步梳理解决方案:
1. 补全Gradle构建脚本的核心依赖和插件
你的现有脚本里buildscript的依赖写了一半,而且缺少关键插件的应用。先把build.gradle补全成这样(关键修改点已标注):
buildscript { ext.kotlin_version = '1.1.3' ext.spring_boot_version = '1.5.4.RELEASE' repositories { jcenter() mavenCentral() // 新增:Spring Boot插件依赖存放在这个仓库 } dependencies { // 补全Kotlin Gradle插件 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // 新增Spring Boot Gradle插件,这是打包可执行Jar的核心 classpath "org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version" } } // 应用三个关键插件 apply plugin: 'kotlin' apply plugin: 'org.springframework.boot' // 核心:处理Spring Boot打包逻辑 apply plugin: 'kotlin-spring' // 可选但推荐:自动把Kotlin类改成open(Spring需要代理类,Kotlin默认类是final的) repositories { jcenter() mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" compile "org.springframework.boot:spring-boot-starter-web" // 你自己添加的其他依赖放在这里 } // 如果你发现插件没自动识别主类,手动指定(替换成你的主类全限定名) // mainClassName = 'com.yourpackage.YourSpringBootApplication'
2. 确认你的主类配置正确
确保你的Spring Boot启动类满足这两个条件:
- 带有
@SpringBootApplication注解 - 有
main函数作为入口(或者用Spring Boot的run方法)
示例主类代码:
package com.example.yourproject import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.SpringBootApplication @SpringBootApplication // 如果没加kotlin-spring插件,这里必须加open关键字,否则Spring无法生成代理 open class YourSpringBootApplication fun main(args: Array<String>) { SpringApplication.run(YourSpringBootApplication::class.java, *args) }
3. 用正确的命令构建和运行
别用普通的./gradlew jar命令!Spring Boot插件提供了专门的bootJar任务来构建可执行Jar:
# 构建可执行Jar ./gradlew bootJar # 运行Jar包(替换成你实际生成的Jar文件名) java -jar build/libs/your-project-name-0.0.1-SNAPSHOT.jar
可能的其他排查点
- 检查主类是否在
src/main/kotlin目录下,包路径和代码里的package声明一致 - 如果添加了其他依赖,确保没有版本冲突(比如和Spring Boot 1.5.4不兼容的依赖)
- 如果你用的是Windows系统,把命令里的
./gradlew换成gradlew.bat
内容的提问来源于stack exchange,提问作者dks551
相关产品推荐
相关产品推荐

