Quarkus 1.13.7搭配OptaPlanner 8.7.0报错:quarkus-core-deployment-1.13.7.Final.jar中存在非法字符
OptaPlanner 8.7.0 + Quarkus 1.13.7 Windows路径错误排查与解决
你在升级OptaPlanner后遇到的这个路径错误,本质是旧版本Quarkus与OptaPlanner 8.7.0的文件路径处理逻辑不兼容导致的,下面给你几个具体的排查和解决思路:
1. 核心原因:Quarkus版本兼容性不匹配
OptaPlanner 8.7.0发布时,Quarkus 1.13.x已经停止维护,OptaPlanner 8.x系列更适配Quarkus 2.x版本。你的项目同时引入了Quarkus 1.13.7的BOM和OptaPlanner 8.7.0的BOM,两者在文件路径处理相关组件上存在逻辑冲突,这是触发错误的主要原因。
2. 优先解决方案:升级Quarkus版本
这是最彻底的解决方式,步骤如下:
- 修改
pom.xml中的Quarkus版本为与OptaPlanner 8.7.0兼容的2.x版本,比如2.3.0.Final(该版本经验证与OptaPlanner 8.7.0适配良好):<properties> <!-- 其他属性保持不变 --> <version.io.quarkus>2.3.0.Final</version.io.quarkus> </properties> - 执行清理和重新构建命令,确保依赖完全更新:
mvn clean install -U - 启动项目验证问题是否解决。
3. 临时妥协方案(不升级Quarkus)
如果暂时无法升级Quarkus,可以尝试以下调整:
- 检查Solver配置加载逻辑,避免使用
file://格式的URL,改用classpath路径或者本地Windows原生路径(比如C:\Users\lolo\...)。例如在application.properties中指定Solver配置文件的classpath路径:quarkus.optaplanner.solver-config-location=classpath:/solver/my-solver-config.xml - 排查项目中自定义的资源加载代码,确保没有将Windows路径转换为
file://格式后直接交给Java的Paths.get()方法处理(老版本Quarkus的依赖库对这种格式的解析存在bug)。
4. 额外检查:依赖冲突验证
执行以下命令查看项目依赖树,确认是否存在quarkus-core相关组件的版本冲突:
mvn dependency:tree | findstr "quarkus-core"
如果发现不同版本的quarkus-core组件被引入,可以在dependencyManagement中明确指定版本为1.13.7.Final,不过这只是临时措施,还是建议优先升级Quarkus版本。
内容的提问来源于stack exchange,提问作者Loïc
相关产品推荐
相关产品推荐

