Sbt依赖安装失败排查:已配置正确Resolver仍无法下载jai_core
解决sbt更新时找不到
jai_core;1.1.3的问题 这个问题的核心原因是:GeoTools依赖的JAI(Java Advanced Imaging)组件由于历史版权限制,并没有被托管在OSGeo的公共仓库中。你第一次执行sbt update成功,是因为当时你的~/.ivy2缓存里已经存在这个依赖包(可能是之前其他项目遗留的),但删除缓存后,sbt只能从你配置的OSGeo仓库查找,自然找不到这个包,所以触发了下载失败的报错。
下面是具体的解决方案:
1. 添加JAI专用仓库到build.sbt
你需要在现有的Resolver配置中,加上JAI的官方Maven仓库,让sbt能定位到这个缺失的依赖:
resolvers ++= Seq( "Open Source Geospatial Foundation Repository" at "http://download.osgeo.org/webdav/geotools/", "JAI Public Repository" at "https://maven.java.net/content/repositories/public/" )
添加完成后重新执行sbt update,sbt就会从新配置的仓库中拉取JAI的包。
2. (可选)如果仓库无法访问,手动安装依赖
如果因为网络或仓库维护原因无法访问JAI的远程仓库,可以手动安装依赖:
- 下载
jai_core-1.1.3.jar文件 - 创建目录
~/.ivy2/local/javax.media/jai_core/1.1.3/jars/(不存在的话手动创建层级) - 将下载的jar包放入该目录
- 再次执行
sbt update即可完成依赖加载
额外说明
GeoTools的部分底层依赖(比如JAI、ImageIO)因为早年的版权政策,没有进入Maven中央仓库,所以必须配置对应的专用仓库才能正常下载。建议你把这些GeoTools相关的专用仓库都固定配置在build.sbt中,避免后续出现类似的依赖缺失问题。
内容的提问来源于stack exchange,提问作者mtwtkman
相关产品推荐
相关产品推荐

