2010-06-21 92 views
1

我有一個更新包,在特定的文件夾「包」中查找並檢查新包以安裝和更新當前安裝的包。在父目錄中,OSGi框架位於「/ framework」目錄中,updater bundle位於「/ system」目錄中,需要檢查的目錄是同一父目錄中的「/ bundles」目錄。在updater bundle內部,創建了一個具有相對路徑的File對象,但它不與「./bundles」字符串一起工作,我不知道該路徑應該與哪個jar文件相關。我將不勝感激任何見解或關於這個問題.. 謝謝, 德尼茲來自OSGi包的相對路徑

編輯:已經想通了。看起來路徑是根據我用來啓動Equinox的Ruby腳本解決的。所以解析路徑是我通過使用Ruby系統傳遞「-console」標誌來啓動Equinox的目錄。 感謝您的回答,Deniz

回答

0

已經想通了。看起來路徑是根據我用來啓動Equinox的Ruby腳本解決的。所以解析路徑是我通過使用Ruby系統傳遞「-console」標誌來啓動Equinox的目錄。 感謝答案,德尼茲

2

取決於您的OSGi配置和實施。它可能與一些地方有關,最有可能的是框架位置。爲什麼不通過創建具有相對路徑的文件進行測試,並檢查值

new File("./bundles").getAbsolutePath(); 

希望這會有所幫助。

3

針對當前工作目錄執行新文件(「./ bundles」)resolves

您可以通過自己獲取輸入流並調用BundleContext#installBundle(String,InputStream)來安裝捆綁包。

OSGi本身對文件系統佈局沒有任何假設,或者捆綁包甚至在磁盤上。 但是,如果您使用Equinox作爲框架,則可以根據「osgi.install.area」來解析相對路徑。 Location service可以給你這個。然後使用絕對路徑來安裝捆綁軟件。或者,您可以獲得System Bundle(BundleContext.getBundle(0)),並使用FileLocator(來自org.eclipse.equinox.common)在磁盤上查找它。

+0

這就是對未來需求的有用信息,感謝.. – 2010-06-21 16:11:16

+0

以下爲春分:http://wiki.eclipse.org/index.php/FAQ_How_do_I_find_out_the_install_location_of_a_plug-in%3F – fikovnik 2012-11-27 12:55:52