无法初始化类javax.crypto.SunJCE_b

我开发了一个Java servlet应用程序,在我开发的PC上,一切都按预期工作,包括使用SFTP以编程方式在端口8443等上使用HTTPS复制PDF并使用SSL证书。

但是,当我尝试在Live服务器上运行应用程序时,我收到错误;

java.lang.NoClassDefFoundError:无法初始化类javax.crypto.SunJCE_b

在调查中,有人建议检查jce.jar。 但我确保jce.jar存在,并在我的项目中创建了一个“lib”文件夹,并将jar复制到那里并将jar放在我的构建路径上,但问题仍然存在。

我该如何解决这个问题? 提前致谢。 这是Tomcat启动应用程序后的控制台输出;

08-Jan-2014 10:45:44 org.apache.catalina.startup.Catalina start INFO: Server startup in 12715 ms 08-Jan-2014 10:47:42 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor run SEVERE: java.lang.NoClassDefFoundError: Could not initialize class javax.crypto.SunJCE_b at javax.crypto.Cipher.getInstance(DashoA13*..) at com.sun.net.ssl.internal.ssl.JsseJce.getCipher(Unknown Source) at com.sun.net.ssl.internal.ssl.RSAClientKeyExchange.(Unknown Source) at com.sun.net.ssl.internal.ssl.ServerHandshaker.processMessage(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at com.sun.net.ssl.internal.ssl.Handshaker$DelegatedTask.run(Unknown Source) at org.apache.tomcat.util.net.SecureNioChannel.tasks(SecureNioChannel.java:285) at org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap (SecureNioChannel.java:343) at org.apache.tomcat.util.net.SecureNioChannel.handshake (SecureNioChannel.java:193) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run (NioEndpoint.java:1642) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 

jce.jar必须位于已部署的Web应用程序的WEB-INF/lib文件夹中。

我经常看到这个问题突然出现,似乎有很多混乱。 发生这种情况的实际原因是因为您用于运行应用程序的JRE已在其jre / lib文件夹(在jdk安装文件夹中)内设置了不受限制的JCE策略jar。

如果您当前的项目不需要这些,那么您可以暂时移出该文件夹。 这将删除对jce库的要求,您将不再看到此错误。

希望这可以帮助。