我用来创建 keystore 的源代码,
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)
你能给我任何想法或解决方案来解决这个问题吗?
最佳答案
我只想发布我对 future 的回答, 我遇到了同样的问题并找到了解决方案, 你为 fileInputStream 传递的路径必须是 keyStore inside java 的路径在我的情况下我在 ubuntu 20.04 和 java 11 路径如下:“/usr/lib/jvm/java-11-openjdk-amd64/lib/安全/证书” 如果您在 Windows 上,路径将是:“C:/Program Files/Java/jre1.8.0_101/lib/security/cacerts”
还要确保密码通常是默认密码,类似于以下单词:“changeit”
关于java - 创建 keystore 时出错 => 线程 "main"java.io.DataInputStream.readInt 处的 java.io.EOFException 异常(未知来源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17216477/