有谁知道如何解决这个问题? 我尝试过很多东西,但都没有。
当我点击更多细节时,我得到了这个:
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)
答案 0 :(得分:69)
您可能在复制/传输过程中损坏文件。
你正在使用maven吗? 如果要使用“filter = true”复制密钥库文件,则可能会损坏该文件。请检查文件大小。
答案 1 :(得分:20)
也许maven编码你的KeyStore,你可以设置filtering = false来修复问题。
<build>
...
<resources>
<resource>
...
<!-- set filtering=false to fix -->
<filtering>false</filtering>
...
</resource>
</resources>
</build>
答案 2 :(得分:13)
(重新)安装最新的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可以访问密钥库。
答案 3 :(得分:4)
我认为您要使用的密钥库文件与Java版本具有不同或不受支持的格式。你可以发布一些你的任务的更多信息吗?
通常,要解决此问题,您可能需要重新创建整个密钥库(例如,使用其他一些JDK版本)。在导出中导入新旧密钥 - 如果你设法在其他地方打开旧密钥。
如果它只是一个不受支持的版本,请尝试BouncyCastle加密提供程序,例如(虽然我不确定它是否为Java添加了对更多密钥库类型的支持?)。< / p>
编辑:我查看了BC的功能规格。
答案 4 :(得分:3)
您的密钥库已损坏,您必须恢复或重新生成密钥库。
答案 5 :(得分:2)
我在ubuntu上遇到了openJDK的问题,不得不安装Oracle JDK才能让它运行起来。
您可以按照此guide on google sites进行操作。
答案 6 :(得分:1)
我对
有同样的问题C:\ Program Files \ Java \ jdk1.8.0_51 \ bin \ keytool
,但是相同的密钥库文件可以与
一起正常工作“ C:\ Program Files \ Java \ jre1.8.0_201 \ bin \ keytool”
我知道这是一个旧线程,但是花了很多时间才弄清楚...:D
答案 7 :(得分:1)
对我来说,发生这个问题是因为我在我的笔记本电脑上用 1.8.0_251 生成了 .jks 文件,我将它复制到了具有 java 1.8.0_45 的服务器上,当我在我的代码中使用该 .jks 文件时,我得到了 java.io。 IOException: 无效的密钥库格式。
为了解决这个问题,我直接在服务器上生成了 .jks 文件,而不是从具有不同 Java 版本的笔记本电脑复制到那里。
答案 8 :(得分:0)
您可以通过在android / app /目录中运行以下命令来生成调试密钥库:keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 < / p>
或者只是从官方模板https://raw.githubusercontent.com/facebook/react-native/master/template/android/app/debug.keystore下载
答案 9 :(得分:-1)
开始构建 清理项目 然后重建你的项目 它对我有用。