新笔记本SBT全新安装后多项目依赖出现Ivy配置异常
show fullResolvers时的「invalid host wildcard specification」错误 我之前也碰到过类似的问题,结合你描述的情况——全新安装SBT、单项目没问题、多项目依赖才触发,而且Mill正常运行,大概率是网络代理配置的问题,或者SBT处理多项目时读取系统代理的逻辑触发了Java的URI解析错误。下面是几个可以尝试的解决步骤:
先检查系统代理设置:
这个错误本质是Java在解析网络地址时遇到了不符合RFC规范的主机通配符(比如代理设置里写了*example.com而不是*.example.com,或者更奇怪的格式)。你可以暂时关闭系统的HTTP/HTTPS代理,然后重新运行sbt show fullResolvers试试,如果没问题,就说明代理配置里的通配符格式有问题,需要修正成合法的格式(比如*.domain.com这种标准写法)。强制SBT忽略系统代理:
如果不想调整系统代理,可以在项目的build.sbt里添加一行配置,让SBT不读取系统代理:sys.props += "java.net.useSystemProxies" -> "false"或者启动SBT时直接加参数跳过系统代理:
sbt -Djava.net.useSystemProxies=false show fullResolvers这样SBT就不会加载系统的代理设置,避免解析非法通配符的问题。
检查SBT全局配置和缓存:
虽然是全新安装,但如果之前有残留的全局配置(比如~/.sbt/1.0/global.sbt或者~/.sbt/0.13/global.sbt),里面可能有自定义的解析器配置,检查有没有包含非法的URL。另外,也可以尝试删除SBT的缓存目录(~/.sbt和~/.ivy2/cache),然后重新运行,排除缓存损坏的可能性。验证最小复现项目:
你给出的最小复现代码本身是完全正常的,我本地测试这个配置不会触发错误,所以问题肯定出在环境层面,上面几个步骤应该能解决。
内容的提问来源于stack exchange,提问作者Sign

