Я пытаюсь интегрировать некоторый ранее существующий код, который опирается на
Класс com.sun.crypto.provider.SunJCE в наше Равноденствие
приложение (версия 3.7.1). Теперь я знаю по умолчанию com.sun
пакеты не доступны для пакетов, поэтому я сделал фрагмент с
Идея расширения рамок для экспорта пакета. Вот ее
манифест:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Extension
Bundle-SymbolicName: extension
Bundle-Version: 1.0.0.qualifier
Fragment-Host: system.bundle; extension:=framework
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: com.sun.crypto.provider
Подсказка 1: PDE отмечает строку Export-Package и говорит, что
com.sun.crypto.provider не существует в этом плагине.
Я создал образец пакета, который просто создает экземпляр рассматриваемого класса
в связке активатора. Манифест этого пакета:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Cryptotest
Bundle-SymbolicName: cryptotest
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: cryptotest.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: com.sun.crypto.provider,
org.osgi.framework;version="1.3.0"
Подсказка 2: PDE отмечает экземпляр с ограничением доступа.
Несмотря на две ошибки, проект компилируется, и я могу
начать отладку. При запуске примера пакета я получаю класс
не найдено исключение. Тем не менее, когда я делаю «пакеты 0» в консоли, он появляется
Equinox требует экспортировать этот пакет:
com.sun.crypto.provider;
version="0.0.0"<org.eclipse.osgi_3.7.1.R37x_v20110808-1106 [0]>
cryptotest_1.0.0.qualifier [2] imports
Теперь я нашел уродливую работу, которая, кажется, работает в моем минимальном примере. Он заключается в том, чтобы обернуть jar-провайдер Java jce в отдельный плагин и включить его в мое приложение, но это просто неправильно.
Может ли кто-нибудь рассказать о том, что происходит? Является
что-то очевидное мне не хватает?