找不到Java安全类

时间:2011-05-04 15:10:35

标签: security java encryption

启动程序时会弹出下一个错误

  

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

这意味着这个类很缺失,虽然我手动找到了这个类,但是通过jar / ide工作但是不能通过服务完美地工作。

也许我需要做一些修改?但是哪个? 提前致谢

7 个答案:

答案 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下