Spring Boot Kotlin项目运行时无法加载Java类问题求助
解决Kotlin+Java混合Spring Boot项目Gradle构建后运行
java -jar出现ClassNotFoundException的问题 我之前也碰到过一模一样的情况——混写Kotlin和Java的Spring Boot 2.x项目,用Gradle构建完jar包,运行时偏偏找不到某个类,头疼得不行。结合那次排查的经验,给你几个实用的解决方向:
1. 先把Gradle的Kotlin插件配置捋顺
这是最常见的问题:Kotlin和Java的编译顺序搞反了,或者源码目录没配置对,导致Kotlin类没被正确编译打包。
如果你的构建脚本是Groovy版的build.gradle,请确保配置成这样:
plugins { id 'org.springframework.boot' version '2.x.x' id 'io.spring.dependency-management' version '1.x.x' id 'java' id 'org.jetbrains.kotlin.jvm' version '1.x.x' id 'org.jetbrains.kotlin.plugin.spring' version '1.x.x' } // 核心:让Java编译依赖Kotlin编译,保证Kotlin类先被编译出来 compileJava.dependsOn compileKotlin compileTestJava.dependsOn compileTestKotlin // 让Kotlin插件同时处理Java和Kotlin源码,避免重复编译 sourceSets { main { kotlin { srcDirs = ['src/main/kotlin', 'src/main/java'] } java { srcDirs = [] // 禁止Java插件再处理Kotlin目录 } } test { kotlin { srcDirs = ['src/test/kotlin', 'src/test/java'] } java { srcDirs = [] } } }
要是用的是Kotlin DSL版build.gradle.kts,对应配置如下:
plugins { id("org.springframework.boot") version "2.x.x" id("io.spring.dependency-management") version "1.x.x" java kotlin("jvm") version "1.x.x" kotlin("plugin.spring") version "1.x.x" } tasks.compileJava { dependsOn(tasks.compileKotlin) } tasks.compileTestJava { dependsOn(tasks.compileTestKotlin) } sourceSets { main { kotlin.srcDirs("src/main/kotlin", "src/main/java") java.srcDirs(emptyList<String>()) } test { kotlin.srcDirs("src/test/kotlin", "src/test/java") java.srcDirs(emptyList<String>()) } }
2. 先确认jar包里到底有没有缺失的类
有时候配置没问题,但缓存或者打包过程抽风,导致类没被打进jar包。你可以用这个命令查看jar包内容:
jar tf my_springboot_kotlin_gradle_project.jar
搜一搜有没有com/example/components/utils/EncryptionUtils.class这个文件。如果找不到,那肯定是编译或打包环节漏了,回到第一步检查配置,或者清理缓存重新构建。
3. 检查类的访问权限和包路径
别忽略这种低级错误:
- 如果是Java类,确保
EncryptionUtils是public修饰的; - 如果是Kotlin类,要么用默认的
public,要么如果是internal的话,要保证调用方和它在同一个模块里; - 仔细核对包路径,有没有拼写错误(比如把
components写成component)。
4. 清理缓存,重新构建
Gradle的缓存有时候会搞出莫名其妙的问题,执行下面的命令彻底清理后重新构建:
./gradlew clean build
然后去build/libs目录下找到jar包,再用java -jar命令运行试试。
内容的提问来源于stack exchange,提问作者Nasibulloh Yandashev
相关产品推荐
相关产品推荐

