2012-12-24 60 views
0

我有延伸AbstractUIPlugin如何在實現BundleActivator的eclipse插件中獲取getStateLocation()?

package lsclipse; 
public class LSclipse extends AbstractUIPlugin { 

有了它一個插件,我可以使用下面的代碼的狀態位置目錄。

public static final String baseDir = \ 
    lsclipse.LSclipse.getDefault().getStateLocation().toOSString(); 

此目錄映射到WORKSPACE/.metdata/.plugin/PROJECT這是很方便 enter image description here

但是與實現BundleActivator的

package lsclipse; 
public class Activator implements BundleActivator { 

我不能讓國家的位置()的插件。

enter image description here

我可以用Platform.getLocation().toFile().toString();獲得這個插件的工作空間,但它是爲WORKSPACE,不WORKSPACE/.metdata/.plugin/PROJECT的基本目錄。

我如何從激活器獲取狀態位置?我的插件是無頭RCP,所以我不想(或不能)從AbstarctUIPlugin繼承。

回答

0

唯一的選擇是嘗試getEnvironmentInfo()如果你的Activator類支持它。通過您返回的EnvironmentInfo實例,您可以在調用Eclipse時找到傳入的任何參數。如果你正在無頭運行,你可能能夠將一個可接受的目錄路徑作爲參數傳遞給你的插件的狀態存儲位置。

1
org.eclipse.core.runtime.Platform.java 
public static IPath getStateLocation(Bundle bundle) 

應該爲您提供該數據包的數據區域。

0

只需擴展插件而不是AbstractUIPlugin,它不具有任何UI依賴性,但具有您提及的相同方法。

相關問題