Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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
“线程中的异常”;“主线程”;NoClassDefFoundError:javax/crypto/SunJCE_b_Java_Web Services_Ssl - Fatal编程技术网

“线程中的异常”;“主线程”;NoClassDefFoundError:javax/crypto/SunJCE_b

“线程中的异常”;“主线程”;NoClassDefFoundError:javax/crypto/SunJCE_b,java,web-services,ssl,Java,Web Services,Ssl,我开发了一个访问ssl web服务的Java应用程序 我使用带有基本身份验证的Java6JAX ws来访问此ws 我已将本地计算机(windows)配置为查询此web服务 从证书的角度来看,我设置了2个密钥库:一个客户端密钥库,其中包含2个条目:一个用于私钥,另一个用于 一个用于我的证书,由CA签名。另一个密钥库,信任库,为我的应用程序服务器(ws)保存一个条目 这是一个自签名证书,当然,我的客户对此表示不满。我找到了解决此错误的方法,并在信任库中导入了此证书。现在我可以从本地机器查询ws 在预

我开发了一个访问ssl web服务的Java应用程序

我使用带有基本身份验证的Java6JAX ws来访问此ws

我已将本地计算机(windows)配置为查询此web服务

从证书的角度来看,我设置了2个密钥库:一个客户端密钥库,其中包含2个条目:一个用于私钥,另一个用于 一个用于我的证书,由CA签名。另一个密钥库,信任库,为我的应用程序服务器(ws)保存一个条目

这是一个自签名证书,当然,我的客户对此表示不满。我找到了解决此错误的方法,并在信任库中导入了此证书。现在我可以从本地机器查询ws

在预生产机器(RHEL 5)上,我收到相同的错误消息“

PKIX路径生成失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效证书路径“

我试着做同样的事情。但当我跑步时:

java InstallCert my_ip:ssl_port changeit 
我得到以下输出

Loading KeyStore cacerts...
Opening connection to my_ip:ssl_port...
Starting SSL handshake...

Exception in thread "Main Thread" java.lang.NoClassDefFoundError: javax/crypto/SunJCE_b
        at javax.crypto.KeyGenerator.a(DashoA13*..)
        at javax.crypto.KeyGenerator.<init>(DashoA13*..)
        at javax.crypto.KeyGenerator.getInstance(DashoA13*..)
        at com.sun.net.ssl.internal.ssl.JsseJce.getKeyGenerator(JsseJce.java:223)
        at com.sun.net.ssl.internal.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:91)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:744)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:238)
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
        at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:958)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1203)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1230)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1214)
        at InstallCert.main(InstallCert.java:58)
正在加载密钥库cacerts。。。
正在打开与my_ip:ssl_端口的连接。。。
正在启动SSL握手。。。
线程“Main thread”java.lang.NoClassDefFoundError中出现异常:javax/crypto/SunJCE_b
位于javax.crypto.KeyGenerator.a(DashoA13*)
在javax.crypto.KeyGenerator(DashoA13*)
位于javax.crypto.KeyGenerator.getInstance(DashoA13*)
位于com.sun.net.ssl.internal.ssl.JsseJce.getKeyGenerator(JsseJce.java:223)
位于com.sun.net.ssl.internal.ssl.RSAClientKeyExchange。(RSAClientKeyExchange.java:91)
位于com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:744)
在com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:238)上
位于com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
位于com.sun.net.ssl.internal.ssl.Handshaker.process_记录(Handshaker.java:529)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:958)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1203)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1230)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1214)
位于InstallCert.main(InstallCert.java:58)
类javax.crypto.sunJCE_b jre/lib中有一个jce.jar。你觉得怎么样

另一个问题:我在windows中获得的信任库(包含导入的服务器证书的信任库)不可移植


我在windows上使用的那个,我可以在linux上复制,不是吗?

正如您所说的jar存在,您可能需要将它添加到您的类路径中,如下所示:

java -cp /path/to/jce.jar:. InstallCert my_ip:ssl_port changeit
要仅列出类路径,请参见

至于

另一个问题:我在windows中获得的信任库(包含导入的服务器证书的信任库)不可移植

我在windows上使用的那个,我可以在linux上复制,不是吗


建议重新创建它:

正如您所说,jar存在,您可能需要将它添加到类路径中,如下所示:

java -cp /path/to/jce.jar:. InstallCert my_ip:ssl_port changeit
要仅列出类路径,请参见

至于

另一个问题:我在windows中获得的信任库(包含导入的服务器证书的信任库)不可移植

我在windows上使用的那个,我可以在linux上复制,不是吗


建议重新创建它:

我在使用installCert应用程序时遇到了类似的问题。尝试修改Java加密策略。从oracle下载这些文件

您只需下载并替换JAVA_HOME/jre/lib/security中的现有文件。
这应该行得通。

我在使用installCert应用程序时遇到了类似的问题。尝试修改Java加密策略。从oracle下载这些文件

您只需下载并替换JAVA_HOME/jre/lib/security中的现有文件。
这应该行。

默认的信任存储是同一文件夹中的“cacerts”文件。只需将它复制并粘贴到linux上的JVM上即可。谢谢,但我正在使用java 6,您想说jce for java 6,是吗?我做到了这一点——使用JARsforJava6,没有任何积极的结果,没错。您应该从oracle下载jce java 6:默认的信任库是同一文件夹中的“cacerts”文件。只需将它复制并粘贴到linux上的JVM上即可。谢谢,但我正在使用java 6,您想说jce for java 6,是吗?我做到了这一点——使用JARsforJava6,没有任何积极的结果,没错。您应该从oracle下载jce java 6:默认情况下,jce.jar应该添加到类路径中——它在jre中。不管怎样,我尝试了这个版本,我添加了-cp。。。。没有result@aurel:jar甚至不在我的系统(linux)上。您可以通过
jar xf filename
显示jar的内容,您尝试过吗?是的,我尝试过,关于java的类在那里,在jce.jarjce.jar中,默认情况下应该添加到类路径中-它在jre中。不管怎样,我尝试了这个版本,我添加了-cp。。。。没有result@aurel:jar甚至不在我的系统(linux)上。您可以通过
jar xf filename
显示jar的内容您试过了吗?是的,我试过了,关于java的课程在jce.jar中,大家好,我尝试获取一个自签名证书并将其加载到我的信任存储中-为此,我使用了InstallCert。托管ws的web服务器的管理员告诉我,我应该禁用验证自签名证书,并将其视为受信任的证书。我如何才能禁用此验证?在我的代码中,我可以访问以下对象:oracle.adf.share.ADFContext和oracle.adf.share.security.providers.jps.JpsSecurityContext;谢谢,AurelHello你们所有人,我试图获得一个自签名证书并将其加载到我的信任列表中