java.io.IOException: неверный формат хранилища ключей - PullRequest
31 голосов
/ 27 июня 2009

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

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

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)

Ответы [ 7 ]

71 голосов
/ 13 августа 2011

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

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

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

21 голосов
/ 08 марта 2016

Возможно maven кодирует ваш KeyStore, вы можете установить filtering = false, чтобы решить проблему.

<build>
    ...
    <resources>
        <resource>
            ...
            <!-- set filtering=false to fix -->
            <filtering>false</filtering>
            ...
        </resource>
    </resources>
</build>
13 голосов
/ 06 января 2016

(Пере) установка последней версии JDK (например, Oracle's ) исправила это для меня.

Перед установкой последней версии 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 на пути может получить доступ к хранилищу ключей.

4 голосов
/ 27 июня 2009

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

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

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

Редактировать: Я посмотрел спецификацию BC.

3 голосов
/ 27 июня 2009

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

2 голосов
/ 19 сентября 2017

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

Вы можете следовать этому руководству на сайтах Google , чтобы сделать это.

0 голосов
/ 18 февраля 2019

иди строить очистить проект затем перестройте свой проект у меня это сработало.

...