构建模块化Java应用时com.fasterxml.jackson.core模块未找到求助
解决JDK17 + Gradle8.1.1下Jackson模块找不到的问题
确认Jackson依赖版本
必须用2.10及以上的Jackson版本——从这个版本开始Jackson才支持JPMS模块化。在build.gradle里明确指定版本:implementation 'com.fasterxml.jackson.core:jackson-core:2.15.2' implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'老版本没有
module-info.class,Gradle没法把它识别成模块,自然报找不到。检查Gradle模块化配置
Gradle7+默认会自动处理模块路径,但如果项目配置有特殊情况,显式开启这个配置试试:java { modularity.inferModulePath = true }这会让Gradle把依赖放到模块路径而非类路径,保证JPMS能识别到Jackson模块。
验证依赖的模块描述符
去本地Gradle缓存里找Jackson的jar包,解压后看看有没有module-info.class文件。缓存路径大概是~/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/[版本号]/[哈希值]/jackson-core-[版本号].jar,要是没这个文件,说明拉到的是非模块化版本,换个新点的版本就行。清理缓存重构建
有时候缓存的依赖出问题,执行命令清缓存再重新构建:./gradlew clean build --refresh-dependencies核对module-info的声明
再检查一遍你的module-info.java,确保拼写和模块名没错:module 你的模块名 { requires com.fasterxml.jackson.core; requires com.fasterxml.jackson.databind; }把
你的模块名换成你实际的模块名称就行。
内容的提问来源于stack exchange,提问作者Conor Egan
相关产品推荐
相关产品推荐

