2011-09-21 5 views
2

EclipseにインストールされているOSGiバンドル(Eclipseプラグイン)にアクセスするIClasspathContainerを作成しています。Eclipseプラグイン:ソースバンドルのインストール先を取得する

Bundle bundle = Platform.getBundle(pluginId); 
    fullPath = FileLocator.getBundleFile(
    return Path.fromOSString(fullPath);bundle).getAbsolutePath(); 

ただし、ソースバンドルがインストールされている場合は、ソースを提供することもできます。ソースバンドルの名前はeclipseによって命名されています。プラグインの場合 org.example.mypluginソースバンドルの名前は org.example.myplugin.sourceです。

誰かがソースバンドルにアクセスする方法を知っていますか?

答えて

1

OSGiバンドルをシンボリック名で直接見つける方法はありませんが、すべてのバンドルをループすることで簡単に行うことができます。

BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext(); 
    String requestedName = bundleContext.getProperty(Constants.BUNDLE_SYMBOLICNAME) + ".source"; 
    Bundle sourceBundle = null; 
    for(Bundle bundle : bundleContext.getBundles()) 
    { 
     String name = bundle.getBundleContext().getProperty(Constants.BUNDLE_SYMBOLICNAME); 
     if(name != null && name.equals(requestedName)) 
     { 
      sourceBundle = bundle; 
      break; 
     } 
    } 

バンドルの場所はとしてアクセスすることができます。これは、動作していないよう

 sourceBundle.getLocation(); 
+0

。少なくとも私のテストプラグイン(Eclipse JUnit起動設定を使用して実行中)では、ソースバンドルは 'getBundles'によって返されません。その起動設定に特別なものを追加する必要がありますか? –

関連する問題