在处理不同的问题(与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...]
Run Code Online (Sandbox Code Playgroud)
嗯,WTF?唯一的变化是我将orignal jar文件放在一边,并在$ JAVA_HOME/lib/security中添加了无限制的文件.该目录现在看起来像这样:
$ 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
Run Code Online (Sandbox Code Playgroud)
当然,.strong和.unlimited版本都在那里,所以我可以快速切换回来.
方向简短明了,似乎只能设想替换这两个文件(local_policy.jar和US_exportpolicy.jar).
还需要做什么?
请注意,java和策略文件的版本是迄今为止最年轻的版本:1.7.0_03和jce_policy-6.
PS 这里发现的类似标题的文章根本没有任何帮助.