JavaNoSuchAlgorithmException-SunJSSE、sun.security.ssl.SSLContextImpl$DefaultSSLContext

JavaNoSuchAlgorithmException-SunJSSE、sun.security.ssl.SSLContextImpl$DefaultSSLContext,java,exception,httpclient,Java,Exception,Httpclient,背景 我一直在自己的Eclipse项目中使用Authorize.net SDK。一切都很顺利。然后我需要将它添加到我的主项目中。我将依赖项添加到类路径中,并复制到所需的代码块中。这本应该奏效的 问题 长话短说,代码在我放的地方不起作用。然而,当我把它直接带到项目中的主要方法时,它就会起作用 在无法工作的地方,我使用调试器仔细检查了代码,发现以下异常: java.net.SocketException: java.security.NoSuchAlgorithmException: Error c

背景

我一直在自己的Eclipse项目中使用Authorize.net SDK。一切都很顺利。然后我需要将它添加到我的主项目中。我将依赖项添加到类路径中,并复制到所需的代码块中。这本应该奏效的

问题

长话短说,代码在我放的地方不起作用。然而,当我把它直接带到项目中的主要方法时,它就会起作用

在无法工作的地方,我使用调试器仔细检查了代码,发现以下异常:

java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)
投掷:

HttpResponse httpResponse = httpClient.execute(httpPost);
注意:httpClient=来自Apache

我现在完全被难倒了。不知道是什么导致了这个错误。在Eclipse中,两个产品似乎都针对相同的JRE。它们都有httpclient-4.0.1.jar。请注意,有问题的项目还有一些其他依赖项,工作项目没有{boneCP、guava、mysql\u connector\u java、protobuf}

我不认为额外的JAR是原因,因为问题代码在项目中的不同位置工作

任何关于错误的想法都非常感谢,我花了一天的时间调试这个,不知道下一步该怎么办


谢谢。

在进一步搜索之后,我发现错误可能与其他问题有关,如无效的密钥库、密码等

然后我想起,在测试SSL的网络连接时,我设置了两个VM参数

我删除了以下VM参数以修复此问题:

-Djavax.net.ssl.keyStore=mySrvKeystore -Djavax.net.ssl.keyStorePassword=123456

注意:此密钥库已不存在,因此这可能就是异常的原因。

我遇到了与此错误类似的问题。在我的例子中,我为密钥库输入了错误的密码

我更改了密钥库的密码以匹配我输入的密码(我不想更改我输入的密码),但它仍然给出了相同的错误

keytool -storepasswd -keystore keystore.jks
问题是我还需要在密钥库中更改密钥的密码

当我最初创建密钥库时,密钥是使用与密钥库相同的密码创建的(我接受此默认选项)。因此,我还必须按如下方式更改密钥的密码:

keytool -keypasswd  -alias my.alias -keystore keystore.jks

我也有类似的问题。问题在于密码:密钥库和私钥使用不同的密码。(使用了密钥库资源管理器)


使用与私钥相同的密码创建密钥库后,问题得到解决。

相同的问题,但我的是一个独立的应用程序。如何解决?当我的信任库是JCEKS类型时,我遇到了相同的错误。有了JKS,它就成功了。