50

これを解決する方法を知っている人はいますか?私は多くのことを試しましたが、どれもうまくいきませんでした。

詳細をクリックすると、次のようになります。

at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source)
atsun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source)
at java.security.KeyStore.load(Unknown Source)
at com.sun.deploy.security.RootCertStore$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.RootCertStore.loadCertStore(Unknown Source)
at com.sun.deploy.security.RootCertStore.load(Unknown Source)
at com.sun.deploy.security.RootCertStore.load(Unknown Source)
at com.sun.deploy.security.ImmutableCertStore.load(Unknown Source)
at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
at sun.plugin.security.PluginClassLoader.getPermissions(Unknown Source)
at java.security.SecureClassLoader.getProtectionDomain(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
4

13 に答える 13

16

最新のJDK(Oracleなど)を(再)インストールすると、修正されました。

最新のJDKをインストールする前に、Terminal.appで次のコマンドを実行したとき:

keytool -list -keystore $(/usr/libexec/java_home)/jre/lib/security/cacerts -v

その結果:

keytool error: java.io.IOException: Invalid keystore format
java.io.IOException: Invalid keystore format
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
    at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
    at java.security.KeyStore.load(KeyStore.java:1445)
    at sun.security.tools.keytool.Main.doCommands(Main.java:792)
    at sun.security.tools.keytool.Main.run(Main.java:340)
    at sun.security.tools.keytool.Main.main(Main.java:333)

ただし、最新の Oracle JDK をインストールしてターミナルを再起動した後、次のコマンドを実行します。

keytool -list -keystore $(/usr/libexec/java_home)/jre/lib/security/cacerts -v

結果:

Enter keystore password:  

これは、パス上のキーツールがキーストアにアクセスできることを示しています。

于 2016-01-05T21:39:13.733 に答える
5

私にとっては、ラップトップで .jks ファイルを 1.8.0_251 で生成し、それを Java 1.8.0_45 のサーバー ウィッチにコピーし、コードでその .jks ファイルを使用したときに java.io.IOException: Invalid を取得したために、この問題が発生しました。キーストア形式。

この問題を解決するために、Java バージョンが異なるラップトップからコピーするのではなく、.jks ファイルをサーバーに直接生成しました。

于 2021-01-19T00:48:26.877 に答える
5

使用したいキーストア ファイルの形式が、Java のバージョンとは異なるかサポートされていないと思います。あなたの仕事の詳細を投稿していただけますか?

一般に、この問題を解決するには、キーストア全体を再作成する必要がある場合があります (たとえば、他の JDK バージョンを使用)。古いキーと新しいキーの間のキーをエクスポート/インポートします-古いキーを別の場所で開くことができた場合。

単にサポートされていないバージョンである場合は、たとえばBouncyCastle暗号プロバイダーを試してください(ただし、より多くのキーストア タイプのサポートを Java に追加するかどうかはわかりません)

編集: BCの機能仕様を見ました。

于 2009-06-27T11:48:16.470 に答える