我有一個插件A,它導出包foo.bar。在包foo.bar中有一個具有默認範圍成員的抽象類FooBar。在插件B中,我喜歡在同一個包中擴展FooBar,並訪問默認的作用域字段。無法訪問依賴插件的包作用域字段
插件的清單:
.
Bundle-SymbolicName: A
Export-Package: foo.bar
.
插件乙清單:
.
Bundle-SymbolicName: B
Require-Bundle: A
.
FooBar的類在插件答:
package foo.bar;
public abstract class FooBar{
int min = -1;
}
類MyFooBar在插件B:
package foo.bar;
public class MyFooBar extends FooBar{
public void setMin(int min){
this.min = min;
}
}
其結果是:
由..Caused:java.lang.IllegalAccessError:試圖從類foo.bar.MyFooBar
訪問字段foo.bar.FooBar.min在正常的java環境我可以訪問包如果我在同一個軟件包中定義我的課程,可以選擇成員。顯然這不是在OSGI環境中,是嗎?
插件B的Bundle-SymbolicName真的是「A」嗎?重複的名字可能導致奇怪的行爲 – Simon 2012-08-07 13:24:14
感謝有關西蒙和弗雷德裏克的信息。我的問題是我擴展了log4j-Framework幾年前擴展了PatternConverter的模式類。現在我必須將它移植到eclipse-bundles。 – 2012-08-07 13:58:11