Подтвердить что ты не робот

Java.io.IOException: Недопустимый формат хранилища

Кто-нибудь знает, как это решить? Я много пробовал, но никто из них не работал.

И когда я нажимаю больше деталей, я получаю следующее:

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)
4b9b3361

Ответ 1

Вы можете повредить файл во время копирования/передачи.

Вы используете maven? Если вы копируете файл хранилища ключей с "filter = true", вы можете повредить файл.

Пожалуйста, проверьте размер файла.

Ответ 2

Может быть, maven, кодирующий KeyStore, вы можете установить filtering = false для исправления проблемы.

<build>
    ...
    <resources>
        <resource>
            ...
            <!-- set filtering=false to fix -->
            <filtering>false</filtering>
            ...
        </resource>
    </resources>
</build>

Ответ 3

Я думаю, что файл хранилища ключей, который вы хотите использовать, имеет другой или неподдерживаемый формат в отношении вашей версии Java. Не могли бы вы разместить дополнительную информацию о своей задаче?

В общем, для решения этой проблемы вам может потребоваться воссоздать все хранилище ключей (например, с использованием другой версии JDK). В export-import ключи между старым и новым - если вам удастся открыть старое где-то еще.

Если это просто неподдерживаемая версия, попробуйте BouncyCastle поставщик криптографии, например (хотя я не уверен Если он добавляет поддержку Java для большего количества типов хранилищ?).

Изменить: Я просмотрел спецификацию спецификации BC.

Ответ 4

(Re) установив последнюю версию 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:  

Что указывает на то, что keytool на пути может получить доступ к хранилищу ключей.

Ответ 5

Ваше хранилище ключей сломано, и вам придется восстановить или восстановить его.

Ответ 6

Я столкнулся с проблемой openJDK на ubuntu, пришлось установить Oracle JDK, чтобы заставить его работать.

Вы можете следовать этому руководству на сайтах google для этого.