web-dev-qa-db-ja.com

Maven:trustAnchorsパラメーターは空ではなく、 'parent.relativePath'である必要があります@ InvalidAlgorithmParameterException @解決できない親POM

MavenとSpringは初めてです。

プロジェクトはローカルテスト環境で実行されますが、デプロイされたシステムでは実行されません。デプロイされたシステム:OpenSDK 10.0.1を使用して新しくインストールされたUbuntu、Maven 3.5.2を取得しました。別のファイアウォールの背後にいて、別のkeyStoreとtrustStoreを使用しています。

Mavenが吐き出す:

Org .[%mything%]。app:useraut:0.0.1-SNAPSHOTの解決できない親POM:アーティファクトorg.springframework.boot:spring-boot-starter-parent:pom:1.5.9.RELEASEを転送できませんでした/中央( https://repo.maven.Apache.org/maven2 ):Java.lang.RuntimeException:Unexpected error:Java.security.InvalidAlgorithmParameterException:trustAnchors parameter is non-empty and '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>

(プロキシが定義されていません)

私は解決策のアイデアを見つけることができるようです: エラー-trustAnchorsパラメーターは空ではない必要があります しかし、Spring、Maven、またはtrustStoreの構成をどこから始めればよいかわかりません

7
Tormod

私が発見したことによると、OpenJDKのUbuntu Linuxの配布パッケージには弱点があります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パージopenjdk-default Java-common

Sudo aptパージ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パージopenjdk-8-jre

Sudo apt install default-jdk

この後、私が使用していたSpringのバージョンがJava 10.0.1でうまく動作しないため、Java 8.x forその目的。

8
Tormod

基本的には、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で実行します。他のシステムでは、2行目も変更する必要があるかもしれません。

次に、「cacerts」ファイルを$ Java_HOME/jre/lib/security/cacertsにあるJDKにコピーします。

0
user3121260