创建密钥库时出错 => 线程"main"java.io.EOFException at java.io.DataInputStream.readInt(未知来源)中的异常



我用来创建密钥库的源代码

import java.io.File;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.cert.Certificate;
public class MainClass {
public static void main(String args[]) throws Exception {
String pass = "wshr.ut";
String alias = "mytest";
String name = "mykeystore";
FileInputStream in = new FileInputStream(name);
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(in, pass.toCharArray());
Certificate c = ks.getCertificate(alias);
in.close();
System.out.println(c);
}
}

运行时出错:

Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readInt(Unknown Source)
at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source)
at java.security.KeyStore.load(Unknown Source)
at MainClass.main(MainClass.java:17)

你能给我一些重新解决这个问题的想法或解决方案吗?

我只想为未来发布我的答案,我遇到了同样的问题并找到了解决方案,您为fileInputStream传递的路径必须是java内部keyStore的路径。在我的情况下,我在ubuntu 20.04和java 11上,路径如下:/usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts";如果你在windows上,路径将是:";C:/Program Files\Java/jre1.8.0_101/lib/security/cacerts";

还要确保密码通常是默认的,它就像下面的单词:";changeit";

最新更新