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或者是设置环境变量引发的问题。