启动程序时会弹出下一个错误
java.lang.NoClassDefFoundError:无法初始化类javax.crypto.SunJCE_b
这意味着这个类很缺失,虽然我手动找到了这个类,但是通过jar / ide工作但是不能通过服务完美地工作。
也许我需要做一些修改?但是哪个? 提前致谢
答案 0 :(得分:5)
我不知道这是否与你的问题有关,但由于我使用的JCE策略文件的版本,我遇到了完全相同的行为。
使用正确的Unlimited Strength Cryptography Extenstions为我解决了这个问题。我相信我可能不小心安装了Java 7的扩展而不是6.(我使用Java 6进行编译)
对于Windows机器,它们应安装在已安装JDK的jre / lib / security文件夹中,例如:c:\ program files \ Java \ jdk1.6.0_33 \ jre \ lib \ security
答案 1 :(得分:4)
该类应位于jce.jar
文件中。这必须在类路径上。如果您启动应用程序而不使用<{1}}选项xor {j}清单中的-cp
条目,请仔细检查您的类路径参数,该参数应为-jar
参数使用Class-Path
开始编程
您找到了一个常见的WTF;) - 这是一个广为人知的规则:如果您使用java -jar myapp.jar
选项启动应用,然后 {{1 }}选项和-jar
环境被忽略。 然后类路径必须仅在Manifest中指定。
快速解决方法 - 假设您将“主类”命名为-cp
,然后按以下方式启动应用程序:
CLASSPATH
答案 2 :(得分:1)
我们将文件的权限设置为仅由root读取并给我们一个类似的错误 更改权限和事情有效!
$ pwd
/ usr / lib目录/ JVM / JAVA / JRE / lib / security中
$ ls -l <br/> 共128
-rw-R - R--。 1 root root 2177 2013年3月1日黑名单
-rw-R - R--。 1 root root 84029 Sep 30 18:01 cacerts
-rw-R - R--。 1 root root 2253 2013年3月1日java.policy
-rw-R - R--。 1 root root 11804 2013年3月1日java.security
-rw-R - R--。 1 root root 109 Mar 1 2013 javaws.policy
-rw-R - R--。 1 root root 2481 Sep 16 16:50 local_policy.jar
-rw-R - R--。 1 root root 0 Mar 1 2013 trusted.libraries
-rw-R - R--。 1 root root 1924 Jul 18 17:42 truststore-epicinterbld.pem
-rw-R - R--。 1 root root 2465 Sep 16 16:50 US_export_policy.jar
答案 3 :(得分:0)
检查启动时使用的jre,并确保jre / lib / ext文件夹包含sunjce_provider.jar
答案 4 :(得分:0)
确保您没有使用extensions目录选项。在过去,当我使用extensions目录选项而不是类路径时,它不再能够加载安全库和策略。当我回到使用显式类路径时,安全功能恢复工作。
答案 5 :(得分:0)
我删除了/ Library / Java / VirtualMachine中的各种旧JDK(得到了osx),重新启动android studio后错误消失了,但我还是要重新设置jdk。也许它会帮助别人。
答案 6 :(得分:0)
这是JRE版本的问题,它应该指向与程序使用的相同的jre版本,它寻找&#34; jre / lib / security&#34;应该在你的程序的同一个jdk下