我有一个插件 A,它导出包 foo.bar。在包 foo.bar 中有一个抽象类 FooBar 具有默认范围成员。在插件 BI 中,喜欢在同一个包中扩展 FooBar 并访问默认范围字段。
插件 A 清单:
.
Bundle-SymbolicName: A
Export-Package: foo.bar
.
插件 B 清单:
.
Bundle-SymbolicName: B
Require-Bundle: A
.
插件 A 中的类 FooBar:
package foo.bar;
public abstract class FooBar{
int min = -1;
}
插件 B 中的 MyFooBar 类:
package foo.bar;
public class MyFooBar extends FooBar{
public void setMin(int min){
this.min = min;
}
}
结果:
..引起:java.lang.IllegalAccessError:试图从类 foo.bar.MyFooBar 访问字段 foo.bar.FooBar.min
在普通的 java 环境中,如果我在同一个包中定义我的类,我可以访问包范围的成员。显然这在 OSGI 环境中不是这样,是吗?