Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决java.security.NoSuchProviderException_Java_Security_Cryptography_Nosuchproviderexception - Fatal编程技术网

如何解决java.security.NoSuchProviderException

如何解决java.security.NoSuchProviderException,java,security,cryptography,nosuchproviderexception,Java,Security,Cryptography,Nosuchproviderexception,我已经成功地在我的机器上安装了加密库,因此在安装后,我可以在jre\lib\security\java.security中看到这些行: security.provider.11=ru.CryptoPro.JCP.JCP security.provider.12=ru.CryptoPro.Crypto.CryptoProvider security.provider.13=ru.CryptoPro.reprov.RevCheck security.provider.14=ru.CryptoPro.

我已经成功地在我的机器上安装了加密库,因此在安装后,我可以在
jre\lib\security\java.security
中看到这些行:

security.provider.11=ru.CryptoPro.JCP.JCP
security.provider.12=ru.CryptoPro.Crypto.CryptoProvider
security.provider.13=ru.CryptoPro.reprov.RevCheck
security.provider.14=ru.CryptoPro.ssl.Provider
security.provider.15=ru.CryptoPro.JCSP.JCSP
这些行自动出现在
java.security
文件中。此外,当我导入需要的模块时,我没有得到任何错误:

import ru.CryptoPro.JCP.*;
import ru.CryptoPro.JCP.KeyStore.*;
import ru.CryptoPro.JCP.params.JCPProtectionParameter;
import ru.CryptoPro.JCSP.JCSP;
完全可以。但是,当我在代码中添加一个小命令时:

KeyStore ks = KeyStore.getInstance("REGISTRY", JCSP.PROVIDER_NAME);
我得到一长串错误:

java.security.NoSuchProviderException: no such provider: JCSP at  
sun.security.jca.GetInstance.getService(Unknown Source) at 
sun.security.jca.GetInstance.getInstance(Unknown Source) at 
java.security.Security.getImpl(Unknown Source) at 
java.security.KeyStore.getInstance(Unknown Source) at 
com.test.examples.Test.doGet(Test.java:40) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at 
... list goes on

这些错误消息的可能原因是什么?

我与不同的安全提供商(
ERACOM
)有类似的问题,并通过明确的提供商注册解决了这个问题:

Security.addProvider(new ERACOMProvider());

尝试以同样的方式注册您的提供者,只需创建实例并使用
java.security.security#addProvider
方法注册它。我希望它能对您有所帮助。

与您的IDE相比,运行JDK/JRE时可能会有不同的工作方式。似乎您是对的。我刚刚执行了这个库的单元测试,它们还可以。现在我将检查我的IDE。