Liunx-https-java.lang.NoClassDefFoundError: javax/crypto/SunJCE_b

错误信息:

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 org.hexun.wangchong.admin.filters.Sercuri.getKey(Sercuri.java:86)
at org.hexun.wangchong.admin.filters.Sercuri.<init>(Sercuri.java:22)
at org.hexun.wangchong.admin.filters.Sercuri.getSercuriInstancesObjectTime(Sercuri.java:35)

情景描述:

此项目中使用paypal支付,需要在程序内部发送一个https请求,确认付款信息是否正确。

在windows下测试运行均没有问题,部署到linux下执行到发送请求的地方就停止。由于无法调试,而且此处抛出的是个Error,所以捕获Exception未发现此错误。

开始以为是linux端口限制的问题。

最后猜测是此处抛出的可能不是Exception,增加一个捕获Throwable的语句,打印出上述错误信息。

解决方案:

根据错误信息判断是jar包版本的问题,原linux中安装的JDK是64位1.6.0.x,重新安装了一个最新版本1.7,问题解决。

此过程中遇到一些小问题,linux中重装了JDK后,JAVA_HOME和PATH重新设定,但是并未立即生效。

所以需要确认环境变量已经改变且已经生效,对应的linux命令随便搜索就有,解决问题心切,直接重启linux系统,问题解决。

其他问题:

问题解决后,一段时间后Linux启动变得相当慢,不知原因,重启也不能解决问题。最后断电重启,系统恢复正常。不知道是不是上面更换JDK或者是设置环境变量引发的问题。

原文地址:https://www.cnblogs.com/tq03/p/3489735.html