Исключение безопасности Java - PullRequest
2 голосов
/ 25 мая 2009

Я пытаюсь интегрировать приложение Hibernate в проприетарную среду. Моя проблема в том, что этот фреймворк как-то проверяет подпись пакетов. Когда я пытаюсь вызвать приложение Hibernate, я получаю следующую ошибку:

Caused by: java.lang.SecurityException: class "org.hibernate.dialect.Oracle10gDialect"'s signer information does not match signer information of other classes in the same package

Дополнительная информация. База данных, в которой работает Hibernate, - Oracle 10g, поэтому этот класс является обязательным.

Какой пакет означает «та же самая упаковка»? Это "org.hibernate.dialect"?

Моя настоящая проблема в том, что я не знаю, с чего начать. Пакет «org.hibernate.dialect» содержится в «hibernate3.jar», взятом из Hibernate Core 3.3.1GA . Они подписывают свои классы неправильно? Или виноват провайдер фреймворка, потому что он использует тот же jar (у меня нет никакой информации по этому поводу).

Есть ли способ отобразить информацию о подписи?

Спасибо

1 Ответ

1 голос
/ 25 мая 2009

Хорошо, я думаю, что решил это. Поставщик фреймворка переупаковал все использованные библиотеки в "thirdparty.jar". Получив доступ к этому JAR-файлу, я понял, что они также используют "org.hibernate.dialect", но у них нет "Oracle10gDialect". Поэтому всякий раз, когда я вызывал свое приложение Hibernate, оно использовало библиотеки фреймворка и, не найдя «org.hibernate.dialect.Oracle10gDialect», возвращалось к пакету «org.hibernate.dialect», предоставленному мной. Наверное, я наконец-то обнаружил Java-эквивалент DLLhell; -)

Мой следующий вопрос будет о том, как правильно управлять такими зависимостями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...