IntelliJ中Maven构建报错java.net.URISyntaxException求解决方案
问题根源
错误栈显示java.net.URISyntaxException: Illegal character in authority at index 7: file://C:\Users\xxx\.m2\repository/...,这是因为Windows本地文件路径被错误转换为URI格式:标准的file URI应该是file:///C:/...(三个斜杠,盘符后用正斜杠),而不是file://C:\...(两个斜杠加反斜杠),冒号在URI的authority位置属于非法字符。该问题出现在Spring Boot Migrator(SBM)调用OpenRewrite解析Maven POM的过程中。
具体解决步骤
修正Maven本地仓库路径格式
打开~/.m2/settings.xml,找到<localRepository>标签,将路径中的反斜杠替换为正斜杠,示例:<localRepository>C:/Users/xxx/.m2/repository</localRepository>同时在IntelliJ的
Settings -> Build, Execution, Deployment -> Build Tools -> Maven中,将Local repository路径也改成正斜杠格式。添加VM参数强制指定正确的仓库URI
在IntelliJ的Run/Debug配置中,给项目添加VM启动参数,明确指定本地仓库的正确URI:-Dmaven.localRepository=file:///C:/Users/xxx/.m2/repository注意参数里是三个斜杠,路径全部用正斜杠。
升级Spring Boot Migrator或OpenRewrite版本
该问题可能是旧版本工具的路径处理bug,尝试将SBM或OpenRewrite依赖升级到最新稳定版,修复已知的Windows路径兼容问题。迁移本地仓库到无特殊字符路径
临时方案:将本地仓库移到不含空格、中文或特殊字符的路径,比如C:/maven_repo,然后修改Maven配置指向这个新路径,避免格式解析冲突。
内容的提问来源于stack exchange,提问作者Ashik Shaheed

