Maven转Gradle时Geotools依赖已缓存但编译器识别失败问题排查
问题根因
你的依赖配置错误拉取了源码包而非可编译使用的二进制类包:所有geotools依赖坐标后添加的:sources@jar后缀,会指定Gradle仅拉取对应构件的源码jar包,这类包内只有Java源代码文件(.java格式),没有编译后的字节码类文件(.class格式),因此编译器无法识别到对应的类定义。
你在缓存和IDE外部库中看到的文件就是拉取到的源码包,自然不包含可直接引用的类。
修复方案
修改build.gradle中dependencies代码块的geotools相关依赖配置,去掉:sources@jar后缀即可:
dependencies { ... implementation 'org.geotools:gt-cql:25.2' implementation 'org.geotools:gt-epsg-hsql:25.2' implementation 'org.geotools:gt-geojson:25.2' implementation 'org.geotools:gt-main:25.2' implementation 'org.geotools:gt-opengis:25.2' implementation 'org.geotools:gt-shapefile:25.2' testImplementation 'org.springframework.boot:spring-boot-starter-test' ... }
可选补充配置
如果需要同时拉取依赖的源码包用于IDE中查看源码,不需要在每个依赖坐标后单独指定sources,添加全局配置即可:
// IntelliJ IDEA 环境配置 idea { module { downloadJavadoc = true downloadSources = true } } // Eclipse 环境配置 eclipse { classpath { downloadJavadoc = true downloadSources = true } }
内容的提问来源于stack exchange,提问作者jhamm
相关产品推荐
相关产品推荐

