web-dev-qa-db-ja.com

Mavenエラー:(繰り返し)Java.security.InvalidAlgorithmParameterException:trustAnchorsパラメーターは空でない必要があります

もう一度尋ねる必要があります。誰かがそれを 重複する質問 だと思って、既に回答してリストから削除しました。

クリーンインストールを実行するか、依存関係を解決するために、maven(mvn)バッチコマンドを(Eclipseではm2eではなく)ウィンドウで使用しています。 pom.xmlが変更されたときに、Nexusサーバーからアーティファクトをダウンロードする必要がある場合があります。これは私にとって長い間働いていました。

しかし、ネクサスサーバー(https、サーバーは会社所有の証明書を使用)への接続が「Java.security.InvalidAlgorithmParameterException:trustAnchors parameter is non-empty」で失敗するJava=リリースを変更しました。しかし、以前のリリースと同じ方法でcacertsキーストアを維持したと確信しています(少なくとも、両方のcacertsのフィンガープリントを比較した;それらは同じです)。

コマンド「mvn -s -Djavax.net.debug = all -Djava.net.ssl.trustStore = "C:/Programme/Java/jre1.8.0_102/lib/security/cacerts」を実行すると"-Djavax.net.ssl.trustStorePassword = changeit dependency:resolve"と、ssl-traceは言う:

keyStore is :    
keyStore type is : jks
keyStore provider is : 
init keystore
init keymanager of type SunX509
trustStore is: No File Available, using empty keystore.
trustStore type is : jks
trustStore provider is : 
init truststore

コマンドで鍵ストアのパスとパスワードを指定しても、sslトレースでの答えは、それが見つからなかったというものです。

この問題に対処するために何を変更したのか、わかりません。 WindowsのPATH-Statementを変更しましたが、これは前に説明したコマンドでは問題になりません。ヒントはありがたいです

8
Ulrich

同じ問題があり、解決するのに1日かかりました。このa Java関連の問題は、エラースタックに表示される場合があります。チェックイン:

/ etc/ssl/certs/Java のために cacerts ファイル。
1)このファイルがここにない場合、これがこのエラーが発生する理由です
2)このファイルがここにある場合、これはおそらく有効なcacertsファイルではないことを意味します。

必要に応じて、次のように更新できます。
Sudo apt-get install --reinstall ca-certificates
そしてそれが今うまくいくなら、完璧です(私の場合はうまくいきませんでした)

これを解決するには:

  1. Oracleから直接open-jdk8(私の場合)からダウンロード
  2. Tar.gzファイルを抽出します
  3. 新しい有効なものを見つける cacerts 下にファイル jre/lib/security
  4. このファイルをコピー / etc/ssl/certs/Java (あなたの場合は古いものを削除する)

最後に、このエラーの原因となったコマンドを実行してください。これがお役に立てば幸いです。

乾杯

12
João Rodrigues

今日私は理由を見つけました:

歴史の中で、私はかつて「setx MAVEN_OPTS "-Djavax.net.ssl.trustStore ...."によってWINDOWS環境変数MAVEN_OPTSを設定していました。

ここで指定されたパスは存在しません。

この設定は、私の質問で示された要求よりも優先されるようです。私はこの振る舞いは少なくとも予期しないものだと思いますが、とにかくそうです。環境変数を修正すると(新しいパスを指しますが、とにかくそれを削除します)、mvn-requestsは正常に機能しました。

3
Ulrich

環境内の無効なパラメーターがコマンドラインのtrustStore設定で無効にされなかったという事実は、おそらくtypoがコマンドラインにあるという事実によるものでした。それは言う:

-Djava.net.ssl.trustStore=...

しかし、これはそうあるべきでした:

-Djavax.net.ssl.trustStore=...
2
JorB

私は手動でjdkを管理しており、openjdk-8でこのエラーが発生していました。 cacertsをopenjdk-11の1つで置き換えたところ、問題なく動作しました。これを試す場合は、最初にcacertsをバックアップしてください。

0
Mariano LEANCE

この問題を解決するもっと簡単な方法:1. goからAmazonが公開したCorretto OpenJDKをダウンロードします2.ガイドに従ってインストールします。 3.これを使用するように設定Java DK。

ubuntu 18で修正された問題。

0
wjxiz