OSGIがプラグインのリソースファイルを読み込む方法

1438 ワード

アイデアはbundleContextを通じてリソースを取得することです.まず、対応するプラグインでActivvatorを作成するには、BundleActivvatorインタフェースを実装する必要があります.コード:

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator {

  private static BundleContext bundleContext;

  public static BundleContext getBundleContext() {
    return bundleContext;
  }

  public void start(BundleContext context) throws Exception {
  	 Activator.bundleContext = context;   
  }

	public void stop(BundleContext context) throws Exception {
		
	}
}


次に、リソースを検索する必要がある場所でbundleContextを取得し、bundleContextのgetResourceメソッドでURLタイプのresource、コードを取得します.

public static InputStream getResourceByContext(String path) {
		try {
			BundleContext bundleContext = Activator.getBundleContext();
			URL resource = bundleContext.getBundle().getResource("/web" + path);
			InputStream in = resource.openStream();
			if (in == null) {
				String msg = "
Not found \"" + path + "\";"; log.error(msg); } return in; } catch (IOException e) { e.printStackTrace(); } finally { } return null; }

ここのパスは、直接工事フォルダの下から書くことに注意してください.