java - 如何在不同的类加载器中使用 Singleton 对象......?

标签 java eclipse

在 Eclipse 插件中,我有两个插件,它们使用自己的类加载器来加载类。2 个主要问题
情况1:-在第一个插件中,我创建了一个单例类,当我希望它从另一个插件设置某些属性时(因为单例,所以每个对象都会更改相同的对象),但它不能做同样的事情正如我所接受的..因为对于每个类加载器都有它自己的单例对象....
情况2:-在第一个或第二个插件中,我创建了一个具有单个静态属性的类,并通过另一个插件我想访问该属性...
我想访问该属性,但我不能,因为每个类加载器都有自己的 namespace ,这意味着有自己的静态变量...
我所做的是:-
1.我在第一个插件中使用 static String 变量创建一个类
2.通过第二个插件我设置了该属性的值
3.当我通过第一次使用它时,它的值null如何,如果通过第二次,则显示我之前设置的内容。 现在的问题是我如何访问这些属性...在情况 1 和情况 2

最佳答案

在 Eclipse 中,每个 OSGi 包(插件)都有自己的类加载器。与其他 bundle 相比,它们没有层次结构。

但是,如果您在plugin1中定义了一个静态变量并希望从plugin2访问它,则可以通过编辑plugin2 来获得plugin2 Import-PackageRequire-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-PackageRequire-Bundle 是在另一个包中查看一个包中的类的正确方法,只要这些包也使用 Export-包

关于java - 如何在不同的类加载器中使用 Singleton 对象......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8079362/

相关文章:

java - findViewById(R.id.searchView) 导致java空指针异常

java - 尝试从文本文件读取 jdbc 程序的参数但出现数字格式异常?

java - 如何知道目标在 Ant 中执行所花费的时间

java - 无法在 Eclipse 中导入 java.awt.geom

android - 无法实例化 Activity ComponentInfo

eclipse : Maven search dependencies doesn't work

Java:无法在枚举中使用 EnumSet:初始化错误:Tech Research Talent Tree 示例

java - Nashorn java.lang.NoClassDefFoundError : jdk/nashorn/api/scripting/JSObject

android - 在包 'backgroundTint' 中找不到属性 'android' 的资源标识符

java - 使用类加载器 AntClassLoader[] 找不到 ant taskdef 类