Работая над другой проблемой (связанной с RMI), я обновил системную «папку безопасности» с файлами политики «неограниченной силы», и теперь мое приложение дает сбой по-другому. Я получаю длинный дамп стека, в котором кажутся уместными следующие биты:
Exception in thread "main" java.lang.ExceptionInInitializerError
[...crop...]
Caused by: java.lang.SecurityException: Can not initialize cryptographic mechanism
at javax.crypto.JceSecurity.(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. Этот каталог теперь выглядит так:
$ 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 соответственно.
П.С. Статья с таким же названием, найденная здесь, ничем не помогла.