Java模块化项目集成Jackson遇配置错误,求可用配置示例
问题核心原因
你遇到的报错来自三个常见错误:一是使用了错误的JPMS模块名,二是Jackson版本低于2.10时没有官方JPMS模块支持,三是模块声明中没有引入jackson-databind的模块。
1. 正确的pom.xml配置
首先确保jackson.version不低于2.10.0,推荐使用最新稳定版,示例配置如下:
<properties> <!-- 可替换为当前最新稳定版 --> <jackson.version>2.15.3</jackson.version> </properties> <dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> </dependencies>
2. 正确的module-info.java配置
Jackson各核心组件对应的JPMS模块名如下:
- jackson-core:
com.fasterxml.jackson.core - jackson-annotations:
com.fasterxml.jackson.annotation - jackson-databind:
com.fasterxml.jackson.databind
完整的模块声明示例(你的模块名为org.dshops.infobook):
module org.dshops.infobook { // 引入Jackson核心模块 requires com.fasterxml.jackson.core; requires com.fasterxml.jackson.annotation; requires com.fasterxml.jackson.databind; // 可选:如果Jackson需要反射访问你模块内的类做序列化/反序列化 // 请将对应包开放给jackson-databind,示例如下 opens org.dshops.infobook.domain to com.fasterxml.jackson.databind; // 可选:如果需要对外导出Jackson相关的类型给依赖你的模块,按需配置即可 exports org.dshops.infobook.publicapi; }
3. 注意事项
- 你之前尝试的
com.fasterxml.jackson.module、com.fasterxml.jackson.datatype是Jackson扩展组件的groupId,不是JPMS模块名,com.faster.xml.jackson.core属于拼写错误,正确前缀为com.fasterxml - 若坚持使用低于2.10的Jackson版本,需要手动配置
--add-reads参数将无名模块的jackson包添加到你的模块路径中,操作复杂度高,直接升级Jackson版本是最优解 - 缺少
opens配置时,运行时会出现Jackson无法反射访问你模块内类的报错,按需开放对应包即可
内容的提问来源于stack exchange,提问作者dano
相关产品推荐
相关产品推荐

