java.lang.NoClassDefFoundError: Could not initialize class javax.crypto.JceSecurityManager
javax.crypto.Cipher.getConfiguredPermission(Cipher.java:2543)
javax.crypto.Cipher.getMaxAllowedKeyLength(Cipher.java:2567)
sun.security.ssl.CipherSuite$BulkCipher.isAvailable(CipherSuite.java:548)
sun.security.ssl.CipherSuite$BulkCipher.isAvailable(CipherSuite.java:527)
sun.security.ssl.CipherSuite.isAvailable(CipherSuite.java:194)
sun.security.ssl.SSLContextImpl.getApplicableCipherSuiteList(SSLContextImpl.java:350)
sun.security.ssl.SSLContextImpl.getDefaultCipherSuiteList(SSLContextImpl.java:308)
sun.security.ssl.SSLSocketImpl.init(SSLSocketImpl.java:607)
sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:549)
sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:110)
com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:428)
com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1647)
com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:534)
javax.mail.Service.connect(Service.java:291)
org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:389)
org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340)
org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:355)
org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:344)
net.codejava.spring.SendEmailAttachController.sendEmail(SendEmailAttachController.java:41)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:483)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:919)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
答案 0 :(得分:10)
确保执行JRE的以下文件未被损坏/修改/删除。
我遇到了类似的问题,这是由于从不同的java版本手动复制这两个文件引起的。 用原始文件替换后解决。
答案 1 :(得分:2)
如果您使用的是Java 8 Update 151(8u151)或更高版本,请同时检查this:
新功能新的安全性属性可控制加密策略
此版本引入了一项新功能,可通过新的Security属性控制JDK使用的JCE管辖策略文件。在较早的版本中,必须分别下载和安装JCE管辖区文件,以允许JDK使用不受限制的加密技术。不再需要下载和安装步骤。 要启用无限制的加密,可以使用新的crypto.policy Security属性。如果在java.security文件中设置了新的Security属性(crypto.policy),或者已通过使用在初始化JCE框架之前调用Security.setProperty(),该设置将被接受。默认情况下,该属性是未定义的。如果未定义属性,并且旧版JCE管辖区文件在旧版lib / security目录中不存在,则默认密码级别将保持为“受限”。要将JDK配置为使用无限加密,请将crypto.policy设置为'unlimited'的值。有关更多信息,请参见此发行版随附的java.security文件中的注释。
注意:在Solaris上,建议先删除旧的SVR4软件包,然后再安装新的JDK更新。如果要在6u131、7u121、8u111之前的JDK版本上进行基于SVR4的升级(不卸载旧软件包),则应在java.security文件中设置新的crypto.policy Security属性。
由于旧的JCE管辖区文件保留在/ lib / security中,因此它们可能不符合最新的安全JAR签名标准,这些标准在6u131、7u121、8u111和更高版本中进行了更新。如果使用旧文件,可能会看到类似于以下的异常:
答案 2 :(得分:1)
当我尝试使用IntelliJ 14连接到数据库时,发生了这种情况。
我玩过我的jre \ lib \ security \ local_policy.jar和jre \ lib \ security \ US_export_policy.jar文件
我通过以下方式解决了这个问题:
答案 3 :(得分:0)
请尝试以下步骤:
答案 4 :(得分:0)
我尝试在library/openjdk:9
Docker容器中运行Maven时遇到此问题。我通过在https://jdk9.java.net/download/从Oracle获取Java 9 JDK并设置JAVA_HOME
,以与其他评论者相同的方式解决了问题。似乎这两个jar文件(在其他答案中提到)在Docker镜像中不存在。