sun.security.util.DerValue 在 WAS 上找不到

sun.security.util.DerValue not found on WAS

我有一个 java 应用程序,它在 tomcat 5.5 上运行良好。但是当部署在 WAS 7 上时它会抛出异常。它尝试连接到 sftp 服务器以检索一些文件,但抛出异常。


错误跟踪:

Caused by: java.lang.NoClassDefFoundError: sun.security.util.DerValue
at com.sun.crypto.provider.DHPublicKey.<init>(DashoA12275)
at com.sun.crypto.provider.DHKeyPairGenerator.generateKeyPair(DashoA12275)
at java.security.KeyPairGenerator$KeyPairGeneratorImpl.generateKeyPair(KeyPairGenerator.java:234)
at com.jcraft.jsch.jce.DH.getE(DH.java:57)
at com.jcraft.jsch.DHG1.init(DHG1.java:110)
at com.jcraft.jsch.Session.receive_kexinit(Session.java:601)
at com.jcraft.jsch.Session.connect(Session.java:320)
at com.jcraft.jsch.Session.connect(Session.java:183)

java.security 文件有以下提供商:

security.provider.1=com.sun.crypto.provider.SunJCE
security.provider.2=com.ibm.crypto.provider.IBMJCE

我迷路了。任何的想法? 谢谢

如包装所述,DerValue 是太阳 class。

sun.security.util.DerValue 

WebSphere 使用 IBM JDK,其中不包括此 class。仅支持 IBM JCE 提供程序。

security.provider.1=com.sun.crypto.provider.SunJCE

去掉这一行可能会解决您的问题,应用程序将 运行 如预期的那样。

如果您打算使用 SunJCE,请查看 this IBM tutorial

使用 IBM 默认实现是一个更简单的选择,我会这样做。我不建议将 Sun JCE 添加为自定义提供程序,因为您需要将此步骤作为部署应用程序的先决条件,并在每次需要在新服务器中更改某些内容时重新生成它。