如何在实现BundleActivator的eclipse插件中获取getStateLocation()?

时间:2012-12-24 20:07:33

标签: java eclipse eclipse-plugin eclipse-rcp

我有一个扩展AbstractUIPlugin

的插件
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

如何从Activator获取州位置?我的插件是无头RCP,所以我不想(或不能)继承AbstarctUIPlugin。

3 个答案:

答案 0 :(得分:1)

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

应该为您提供捆绑的数据区域。

答案 1 :(得分:0)

如果您的Activator类支持它,唯一的选择是尝试getEnvironmentInfo()。通过您回来的EnvironmentInfo实例,您可以找到调用Eclipse时传入的任何参数。如果您正在运行无头,则可以将插件的状态存储位置作为参数传入可接受的目录路径。

答案 2 :(得分:0)

简单地扩展插件而不是AbstractUIPlugin,它没有任何ui依赖关系,但具有您提到的相同方法。