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

Spring Boot Kafka Telegram Bot运行Jar文件启动失败求助

问题分析与解决方案

从报错日志看,核心问题是运行时找不到org.springframework.boot.configurationprocessor.json.JSONException类,原因是spring-boot-configuration-processor默认是编译时依赖(scope为compileOnly),IDE运行时会自动包含这个依赖,但打包成可执行Jar时不会将其打入,导致运行时缺失。

解决步骤

1. 排查代码中的错误依赖

检查KafkaConsumerServiceImpl或其他相关类,是否直接导入了org.springframework.boot.configurationprocessor.json包下的JSON相关类(比如JSONException、JSONObject)。这个包下的类仅用于Spring Boot的配置元数据生成,不应该在业务代码中直接使用。

2. 替换为标准JSON库

将代码中的JSON相关类替换为行业标准库的实现:

  • 方案一:使用Jackson(Spring Boot默认集成)
    替换导入为com.fasterxml.jackson.core.JsonProcessingException、com.fasterxml.jackson.databind.ObjectMapper等,示例:
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
  • 方案二:使用org.json库
    在pom.xml中添加依赖:
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20230618</version> <!-- 使用最新稳定版 -->
    </dependency>
    
    然后替换导入为org.json.JSONException、org.json.JSONObject等。

3. 临时解决方案(不推荐)

如果暂时无法修改代码,可以修改依赖的scope,让spring-boot-configuration-processor被打入Jar包:

  • Maven:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <scope>compile</scope> <!-- 原来为compileOnly -->
    </dependency>
    
  • Gradle:
    implementation 'org.springframework.boot:spring-boot-configuration-processor' // 原来为annotationProcessor
    
    注:此方案会增加Jar包体积,且不符合依赖设计初衷,仅作为临时应急方案。

4. 重新打包并测试

修改完成后,执行打包命令:

mvn clean package # Maven
./gradlew clean bootJar # Gradle

然后运行Jar文件验证是否修复。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:09:02