Jar 実行時の無効な署名ファイル エラーの解決
.jar としてパッケージ化された Java プログラムを実行しようとすると、エラーが発生する場合があります「java.lang.SecurityException: マニフェストの主要属性の署名ファイル ダイジェストが無効です。」このエラーは通常、.jar が bouncy Castle などの外部ライブラリを使用している場合に発生します。
このエラーの根本原因は、Java 仮想マシン (JVM) の署名検証プロセスにあります。 JVM は、.jar に含まれるマニフェスト ファイルの署名をチェックして、その信頼性と整合性を確認します。ただし、使用されているライブラリに独自の署名が含まれている場合、JVM の検証プロセスと競合する可能性があります。
この問題に対する潜在的な解決策の 1 つは、特に maven-shade-plugin を使用して uber-jar を作成する場合に関連します。シェーディング プロセスから署名ファイルを除外します。次の行をプラグイン設定に追加すると、署名ファイルが除外され、エラーが解決されます:
<filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters>
uber-jar から署名ファイルを除外することで、JVM の検証プロセスとの競合が回避されます。プログラムは「無効な署名ファイル」エラーなしで実行されます。
以上がJAR ファイルの「java.lang.SecurityException: 無効な署名ファイル ダイジェスト」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。