OSGIがプラグインのリソースファイルを読み込む方法
1438 ワード
アイデアはbundleContextを通じてリソースを取得することです.まず、対応するプラグインでActivvatorを作成するには、BundleActivvatorインタフェースを実装する必要があります.コード:
次に、リソースを検索する必要がある場所でbundleContextを取得し、bundleContextのgetResourceメソッドでURLタイプのresource、コードを取得します.
ここのパスは、直接工事フォルダの下から書くことに注意してください.
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;
}
ここのパスは、直接工事フォルダの下から書くことに注意してください.