2011-11-02 17 views
2

我的應用程序依賴於一些SDK的罐子。該SDK在其API中廣泛使用了this.getClass().getResource("xyz.class")方法。this.getClass()。getResource(「xyz.class」)不返回在OSGi環境中的DIR PATH

現在,我開發了基於這些瓶子的包並在OSGi環境中運行它們。但是,在OSGi環境中,this.getClass().getResource("xyz.class")代碼行會返回一些到xyz.class的bundle路徑,而預計它應該返回絕對DIR路徑,並且jar://(就像它在非OSGi env中那樣)。

問題是如何獲得這項工作。我需要DIR PATH到可以出現在另一個包中的依賴jar中的類嗎?

+0

「預計它應該返回絕對DIR路徑」......這種期望是不正確的。 –

回答

2

你不能。 OSGi抽象包內容的位置。這是濫用類加載器API以假定所有資源URL位於文件系統上。過去這樣做的事實並不能證明它違反了抽象。

這就是說,Eclipse Equinox框架實現提供了一個實現特定的方式。見org.eclipse.core.runtime.FileLocator.toFileURL(URL)