【发布时间】:2012-04-02 11:08:12
【问题描述】:
在处理不同的问题(与 RMI 相关)时,我使用“无限强度”策略文件升级了系统的“安全文件夹”,现在我的应用程序以不同的方式失败。我得到一个长堆栈转储,其中以下位似乎相关:
Exception in thread "main" java.lang.ExceptionInInitializerError
[...crop...]
Caused by: java.lang.SecurityException: Can not initialize cryptographic mechanism
at javax.crypto.JceSecurity.<clinit>(JceSecurity.java:86)
... 17 more
Caused by: java.lang.SecurityException: The jurisdiction policy files are not signed by a trusted signer!
[...crop...]
嗯,WTF?唯一的变化是我将原始 jar 文件移到一边,并在 $JAVA_HOME/lib/security.xml 中添加了无限制的 jar 文件。该目录现在看起来像这样:
$ ls
blacklist javaws.policy trusted.libraries
cacerts local_policy.jar US_export_policy.jar
java.policy local_policy.jar.strong US_export_policy.jar.strong
java.security local_policy.jar.unlimited US_export_policy.jar.unlimited
当然,有 .strong 和 .unlimited 版本,所以我可以快速切换回来。
说明简短明了,似乎他们只设想替换这两个文件(local_policy.jar 和 US_exportpolicy.jar)。
还有什么可做的?
请注意,java 和策略文件的版本是迄今为止最年轻的版本:分别为 1.7.0_03 和 jce_policy-6。
附: here找到的同名文章,一点帮助都没有。
【问题讨论】:
-
在异常消息中使用感叹号让我哈哈大笑