Spring JMS教程项目构建成功后运行出现Jackson类找不到异常求助
问题排查与解决方案
一、先确认Java版本配置全局生效
- 虽然设置了
JAVA_HOME指向Java 17,但务必重新打开终端/命令行窗口,Windows旧窗口不会自动加载新环境变量。执行java -version和javac -version,确认输出均为17.0.6。 - 若用IDE运行,需同步检查IDE配置:在项目结构设置中,将项目SDK、模块SDK都设为Java 17;同时在运行/调试配置里,把JRE也指定为Java 17。
二、Jackson依赖缺失的根源修复
出现com.fasterxml.jackson.databind.ObjectMapper的ClassNotFoundException,核心原因是运行时classpath缺少Jackson相关依赖——IDE能看到类是因为本地仓库有依赖,但构建后的运行环境未正确引入。
Maven项目修复步骤:
- 检查
pom.xml,确保包含完整的Jackson与JMS整合依赖,官方示例需如下配置:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-jaxb-annotations</artifactId> </dependency>
- 执行
mvnw clean install重新构建,确保依赖下载完整且打包时被纳入运行classpath。 - 若用
java -jar启动,检查生成的jar是否为Spring Boot可执行fat jar:执行jar tf target/[你的应用jar名].jar,确认输出中包含com/fasterxml/jackson/databind/ObjectMapper.class。
Gradle项目修复步骤:
- 检查
build.gradle依赖配置,确保包含:
implementation 'org.springframework.boot:spring-boot-starter-activemq' implementation 'com.fasterxml.jackson.module:jackson-module-jaxb-annotations'
- 执行
gradlew clean build bootJar生成可执行jar,再用java -jar build/libs/[你的应用jar名].jar启动。
三、验证MessageConverter Bean配置
检查MappingJackson2MessageConverter的Bean定义,确保使用Spring Boot自动配置的ObjectMapper实例,而非手动创建的未初始化实例,正确定义示例:
@Bean public MappingJackson2MessageConverter jacksonJmsMessageConverter() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); converter.setTargetType(MessageType.TEXT); converter.setTypeIdPropertyName("_type"); return converter; }
内容的提问来源于stack exchange,提问作者Holland Park
相关产品推荐
相关产品推荐

