在 Eclipse 插件中,我有两个插件,它们使用自己的类加载器来加载类。2 个主要问题
情况1:-在第一个插件中,我创建了一个单例类,当我希望它从另一个插件设置某些属性时(因为单例,所以每个对象都会更改相同的对象),但它不能做同样的事情正如我所接受的..因为对于每个类加载器都有它自己的单例对象....
情况2:-在第一个或第二个插件中,我创建了一个具有单个静态
属性的类,并通过另一个插件我想访问该属性...
我想访问该属性,但我不能,因为每个类加载器都有自己的 namespace ,这意味着有自己的静态变量...
我所做的是:-
1.我在第一个插件中使用 static String
变量创建一个类
2.通过第二个插件我设置了该属性的值
3.当我通过第一次使用它时,它的值null
如何,如果通过第二次,则显示我之前设置的内容。
现在的问题是我如何访问这些属性...在情况 1 和情况 2
最佳答案
在 Eclipse 中,每个 OSGi 包(插件)都有自己的类加载器。与其他 bundle 相比,它们没有层次结构。
但是,如果您在plugin1中定义了一个静态变量并希望从plugin2访问它,则可以通过编辑plugin2 来获得plugin2 Import-Package
或Require-Bundle
>MANIFEST.MF。例如:如果这是plugin2的MANIFEST.MF:
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-包
关于java - 如何在不同的类加载器中使用 Singleton 对象......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8079362/