Micronaut运行jar包出现ClassNotFoundException异常求助
问题根因
- 直接执行的
demo2-0.1.jar是普通项目构建产物,仅包含自身业务代码,未整合Micronaut等第三方依赖,因此运行时抛出ClassNotFoundException找不到核心类。 - 已引入shadow插件但未执行对应构建任务,
build/libs目录下未生成带-all后缀的全量依赖包,因此触发无法访问jar文件的报错。 - 手动为普通jar添加的manifest主类配置,与Micronaut应用插件、shadow插件的自动配置冲突,会导致全量包构建后主类配置异常。
- 手动指定
micronaut-runtime:3.1.0版本,与2.0.6版本的Micronaut应用插件默认适配的2.x版本存在兼容性冲突,也可能引发类加载异常。
解决方案
- 调整
build.gradle配置- 删除多余的普通jar manifest配置段
- 移除
micronaut-runtime依赖的手动版本号,交由Micronaut插件统一管理依赖版本
调整后的dependencies段如下:
dependencies { implementation("io.micronaut:micronaut-runtime") annotationProcessor("io.micronaut:micronaut-http-validation") implementation("io.micronaut:micronaut-http-client") runtimeOnly("ch.qos.logback:logback-classic") implementation("io.micronaut:micronaut-validation") } - 执行全量包构建任务
项目根目录下执行构建命令:# Linux/Mac ./gradlew shadowJar # Windows gradlew.bat shadowJar - 启动应用
构建完成后执行启动命令即可正常运行:java -jar build/libs/demo2-0.1-all.jar
内容的提问来源于stack exchange,提问作者welcome back
相关产品推荐
相关产品推荐

