0

我有一个扩展 AbstractUIPlugin 的插件

package lsclipse;
public class LSclipse extends AbstractUIPlugin {

有了它,我可以使用以下代码获取状态位置目录。

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

这个目录映射到WORKSPACE/.metdata/.plugin/PROJECT哪个方便 在此处输入图像描述

但是,使用实现 BundleActivator 的插件

package lsclipse;
public class Activator implements BundleActivator {

我无法获得状态位置()。

在此处输入图像描述

我可以Platform.getLocation().toFile().toString();用来获取此插件的工作区,但它是 . 的基本目录WORKSPACE,而不是WORKSPACE/.metdata/.plugin/PROJECT.

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

4

3 回答 3

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

should give you data area for the bundle.

于 2012-12-26T00:57:37.107 回答
0

只需扩展没有任何 ui 依赖项但具有您提到的相同方法的 Plugin 而不是 AbstractUIPlugin。

于 2012-12-30T03:16:36.157 回答
0

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

于 2012-12-24T22:59:12.290 回答