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) 

バンドルのデータ領域を提供する必要があります。

于 2012-12-26T00:57:37.107 に答える
0

getEnvironmentInfo()唯一の代替手段は、Activator クラスがそれをサポートしているかどうかを試すことです。取得した EnvironmentInfo インスタンスを通じて、Eclipse が呼び出されたときに渡された引数を見つけることができます。ヘッドレスで実行している場合は、プラグインの状態ストアの場所として許容されるディレクトリ パスを引数として渡すことができる場合があります。

于 2012-12-24T22:59:12.290 に答える
0

UI依存関係はありませんが、あなたが言及したのと同じメソッドを持つAbstractUIPluginではなく、プラグインを拡張するだけです。

于 2012-12-30T03:16:36.157 に答える