Ubuntu18.04升级Java10后无法运行Spring Initializer生成的Maven项目
解决升级Java 10后Maven无法解析Spring Boot父POM的问题
从你给出的错误日志来看,主要有三个核心问题需要逐一解决:
1. 修正POM中parent.relativePath的错误配置
日志里明确提示:
'parent.relativePath' of POM com.mynotes.spring-cloud:spring-cloud-contract-consumer:0.0.1-SNAPSHOT points at com.mynotes.spring-cloud:spring-cloud-contract instead of org.springframework.boot:spring-boot-starter-parent
这说明你的项目pom.xml里的<parent>节点的relativePath属性指向了错误的本地POM文件。你需要:
- 打开
spring-cloud-contract-consumer/pom.xml,定位到第14行的<parent>配置块 - 要么直接删除
relativePath属性(让Maven自动从远程仓库拉取Spring Boot父POM) - 要么将
relativePath修改为正确的路径(如果本地确实需要依赖特定的本地父POM文件)
示例修正后的父节点配置:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> <!-- 删掉错误的relativePath,或者替换为正确路径 --> <!-- <relativePath>../spring-cloud-contract/pom.xml</relativePath> --> </parent>
2. 解决Java 10的trustAnchors证书信任问题
错误里的java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty是Ubuntu 18.04升级到Java 10后常见的证书库关联问题——Java 10的cacerts文件没有正确链接到系统根证书库。
可以通过以下命令修复:
- 先确认Java 10的安装目录(示例路径为
/usr/lib/jvm/java-10-openjdk-amd64,请根据实际情况调整) - 备份原有证书文件:
sudo cp /usr/lib/jvm/java-10-openjdk-amd64/lib/security/cacerts /usr/lib/jvm/java-10-openjdk-amd64/lib/security/cacerts.bak - 将系统证书库链接到Java的证书文件:
sudo ln -sf /etc/ssl/certs/java/cacerts /usr/lib/jvm/java-10-openjdk-amd64/lib/security/cacerts
如果系统中不存在/etc/ssl/certs/java/cacerts,先安装证书工具包:
sudo apt-get install ca-certificates-java
3. 处理Spring Boot 1.5.x与Java 10的兼容性问题
Spring Boot 1.5.13.RELEASE不支持Java 10,它的最高兼容版本是Java 8。即使前面的问题都修复了,后续运行项目也大概率会出现兼容性报错。你有两个可选方案:
- 降级Java版本到OpenJDK 8:这是最稳妥的选择,适合需要继续使用Spring Boot 1.5.x生态的场景
- 升级Spring Boot版本到2.x(推荐2.1.x及以上):这些版本原生支持Java 10,不过需要同步调整项目的依赖配置以适配新版本
总结执行步骤
- 优先修正
pom.xml中的parent.relativePath配置错误 - 修复Java 10的证书信任链问题
- 根据项目需求选择降级Java或升级Spring Boot版本
内容的提问来源于stack exchange,提问作者Dhananjay
相关产品推荐
相关产品推荐

