как использовать объект Singleton в другом загрузчике классов ....? - PullRequest
2 голосов
/ 10 ноября 2011

в плагине eclipse. У меня есть два плагина, которые используются там для загрузки классов собственным загрузчиком классов. 2 основная проблема
Случай 1: - в 1-м плагине iсоздал синглтон-класс, и когда я захочу, чтобы он установил какое-то свойство из другого плагина (потому что синглтон, так что каждый объект будет менять один и тот же объект), но он не может делать то же самое, что и я, потому что для каждого загрузчика классов существует свой собственный синглтон-объект....
Случай 2: - в 1-м или 2-м плагине я создал класс с одним свойством static, а через другой плагин я хочу получить доступ к этому свойству ...
iхочу получить доступ к этому свойству, но я не могу, потому что у каждого загрузчика классов есть свое пространство имен, что означает, что у него есть собственная статическая переменная ...
что я сделал: -
1. я делаюкласс в 1-м плагине с переменной static String
2. через плагин 2ND я устанавливаю значение этого свойства
3. когда я использую его через 1-й, то как его значение null, а если через 2-й - этопоказать, что я установил ранее.Теперь проблема в том, как я могу получить доступ к этому свойству ... в случае 1 и случае 2

1 Ответ

5 голосов
/ 10 ноября 2011

В Eclipse каждый пакет (плагин) OSGi имеет свой собственный загрузчик классов. Они не являются иерархическими по сравнению с другими пакетами.

Но если вы определите статическую переменную в plugin1 и захотите получить к ней доступ из plugin2, у вас будет plugin2 Import-Package или Require-Bundle, отредактировав plugin2 MANIFEST.MF . ex :, если это был MANIFEST.MF в plugin2:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.ui.examples.propertysheet; singleton:=true
Bundle-Version: 3.2.200.qualifier
Bundle-Activator: org.eclipse.ui.examples.propertysheet.PropertySheetPlugin
Bundle-Vendor: %Plugin.providerName
Bundle-Localization: plugin
Require-Bundle: plugin1
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.ui.examples.propertysheet
Bundle-RequiredExecutionEnvironment: J2SE-1.4

Import-Package и Require-Bundle являются правильными способами просмотра классов из одного пакета в другом пакете, если пакеты также используют Export-Package

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