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

SpringBoot打包JAR/WAR运行时ClassNotFoundException问题咨询

解决Spring Boot Kotlin项目打包JAR/WAR后ClassNotFoundException的问题
  • 移除手动配置的War Manifest属性
    你当前手动设置了tasks.withType<War>里的Main-Class,这会和Spring Boot插件自动生成的Manifest内容冲突。删掉这段配置:

    tasks.withType<War> {
        manifest.attributes["Main-Class"] = "com.example.api.ExampleApplication"
    }
    

    Spring Boot插件会通过你配置的springBoot.mainClass自动生成正确的Manifest,包含Main-Class(Spring Boot的启动器类)和Start-Class(你的应用启动类)。

  • 确认启动类配置正确
    确保你的ExampleApplication类添加了@SpringBootApplication注解,结构如下:

    package com.example.api
    
    import org.springframework.boot.autoconfigure.SpringBootApplication
    import org.springframework.boot.runApplication
    
    @SpringBootApplication
    class ExampleApplication
    
    fun main(args: Array<String>) {
        runApplication<ExampleApplication>(*args)
    }
    

    如果需要将War部署到外部Servlet容器,启动类还需继承SpringBootServletInitializer并覆盖configure方法:

    @SpringBootApplication
    class ExampleApplication : SpringBootServletInitializer() {
        override fun configure(application: SpringApplicationBuilder): SpringApplicationBuilder {
            return application.sources(ExampleApplication::class.java)
        }
    }
    
    fun main(args: Array<String>) {
        runApplication<ExampleApplication>(*args)
    }
    
  • 清理并重新构建项目
    执行Gradle清理和构建命令,避免缓存导致的异常:

    ./gradlew clean build
    
  • 使用正确命令运行打包文件
    运行JAR包:

    java -jar build/libs/your-app-name.jar
    

    运行WAR包(Spring Boot支持直接运行WAR):

    java -jar build/libs/your-app-name.war
    
  • 检查依赖打包情况
    确保build.gradle.kts中没有排除必要依赖,Spring Boot插件默认会将所有依赖打包到JAR/WAR中(WAR包的依赖会放在WEB-INF/lib目录)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:16:08