Java 尝试生成证书时的NPE
尝试在android上生成X509证书时出现以下错误 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.security.PublicKey java.security.cert.X509Certificate.getPublicKey()” 下面是我用来实现这一点的代码:Java 尝试生成证书时的NPE,java,android,x509certificate,Java,Android,X509certificate,尝试在android上生成X509证书时出现以下错误 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.security.PublicKey java.security.cert.X509Certificate.getPublicKey()” 下面是我用来实现这一点的代码: AssetFileDescriptor assetFileDescriptor = this.getAssets().openFd("cert.c
AssetFileDescriptor assetFileDescriptor = this.getAssets().openFd("cert.cer");
FileDescriptor securityCertificate = assetFileDescriptor.getFileDescriptor();
FileInputStream fin = new FileInputStream(securityCertificate);
CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
X509Certificate certificate = (X509Certificate) cf.generateCertificate(fin);
错误似乎发生在cf.generateCertificate(fin)通过使用InputStream而不是FileInputStream解决了这个问题,下面的代码对我来说很好:
InputStream inputStream = assetManager.open("cert.cer");
CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
X509Certificate certificate = (X509Certificate) cf.generateCertificate(inputStream);
可能是重复的否,它不是重复的,在使用FileInputStream和CertificateFactory生成X509之前,我尝试检查它们是否为null,但它们不是,方法generateCertificate()返回null,这不是我的methodIs cf!=CertificateFactory.getInstance()调用后为null?您确定参数是X.509而不是X509吗?如果
generateCertificate
返回null,为什么要获取NPE?发布您的完整异常和生成它的行。