Maven:trustAnchors参数必须是非空的并且' parent.relativePath' @ InvalidAlgorithmParameterException @ Non-resolvable parent POM

时间:2018-05-28 18:14:37

标签: spring maven spring-boot truststore parent-pom

我是Maven和Spring的新手。

项目在我的本地测试环境中运行,但不在已部署的系统上运行。 在部署的系统上: 我使用OpenSDK 10.0.1,Maven 3.5.2安装了全新的Ubuntu 我在不同的防火墙后面,拥有不同的keyStore和trustStore。

Maven吐出来:

  

组织的不可解析的父POM。[%mything%]。app:useraut:0.0.1-SNAPSHOT:无法传输工件org.springframework.boot:spring-boot-starter-parent:pom:1.5.9 .RELEASE from / to central(https://repo.maven.apache.org/maven2):java.lang.RuntimeException:意外错误:java.security.InvalidAlgorithmParameterException:trustAnchors参数必须为非空且" parent.relativePath'点在没有本地POM @第14行,第10列 - > [帮助2]

pom snipet:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

(没有代理人定义)

我似乎可以找到解决方案的想法:Error - trustAnchors parameter must be non-empty但我不知道从哪里开始配置Spring,Maven或trustStore

2 个答案:

答案 0 :(得分:7)

根据我发现的,Ubuntu Linux for OpenJDK Java 9及更高版本的发行包存在缺陷。所以安装default-jdk可能会破坏事情。

引自:(https://bugs.launchpad.net/ubuntu/+source/openjdk-lts/+bug/1768799)+其他证书更新。

请注意,重新安装default-jdk是可选的,并且可以继续使用openjdk-8。

  

解决方法:删除default-jdk,安装openjdk-8,删除openjdk-8并重新安装default-jdk:

     

sudo apt purge openjdk-default java-common

     

sudo apt purge default-jdk java-common

     

sudo dpkg --purge --force-depends ca-certificates-java

     

sudo apt install openjdk-8-jre

     

sudo apt-get install ca-certificates-java

     

sudo apt purge openjdk-8-jre

     

sudo apt install default-jdk

在此之后我还发现我使用的Spring版本在Java 10.0.1上运行得不好,所以回到Java 8.x就是为了这个目的。

答案 1 :(得分:0)

基本上,它是关于ca-certificates-java的。当您在Linux发行版存储库之外获得JDK时,就更加沮丧了。

我从这里得到了线索: http://rabexc.org/posts/certificates-not-working-java

我修改了评论中的bash脚本

CACERTS="/home/user/cacerts"
cd /etc/ssl/certs
for file in *.pem; do
   echo "Importing $file..."
   openssl x509 -outform der -in "$file" -out /tmp/certificate.der
   keytool -import -alias "$file" -keystore $CACERTS \
           -file /tmp/certificate.der -deststorepass changeit -noprompt
done

修改第一行以适合自己。我在debian上运行它,对于其他系统,您可能还需要更改第二行。

然后我将“证书”文件复制到JDK上 $ JAVA_HOME / jre / lib / security / cacerts