OSGI / SPRING - 将非源文件夹添加到运行时环境

时间:2012-12-21 21:26:16

标签: java spring eclipse-plugin osgi eclipse-rcp

我正在运行基于捆绑的项目(在eclipse rcp中)。在特定的包中,由于基于jar的库代码,我需要访问文件夹。所以在实践中我的要求是在我的项目中有一个包含配置文件的特定文件夹。如果我测试我的项目作为一个普通的Java应用程序一切运行顺利,但是当我尝试在osgi内运行它失败,因为它找不到该文件夹​​。如何将文件夹添加到运行时环境?我试图添加到捆绑包的Runtime-Classpath配置中,但这并不能解决我的问题。

我的捆绑文件清单。我想添加配置/文件夹。

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: net.beaconcontroller.datastore
Bundle-SymbolicName: net.beaconcontroller.datastore
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: net.beaconcontroller.datastore
Bundle-ClassPath: .,
 lib/bft-smart-hashserver.jar,
 config/

1 个答案:

答案 0 :(得分:0)

打开清单编辑器,选择构建并检查二进制构建视图中的文件夹,以便在导出插件时将其包含在内。

然后,很可能你不会正确加载一个bundle / plugin资源,这需要与常规java应用程序不同。这是一个代码示例,尝试一下,让我知道它是否有效。

public static String loadResourceAsString(String pluginId,
        String resourcePath) throws IOException {
    Bundle bundle = Platform.getBundle(pluginId);
    URL url = bundle.getResource(resourcePath);
    BufferedReader in = new BufferedReader(new InputStreamReader(
            url.openStream()));
    StringBuilder builder = new StringBuilder();
    String inputLine;
    while ((inputLine = in.readLine()) != null) {
        builder.append(inputLine + System.getProperty("line.separator"));
    }
    in.close();
    return builder.toString();
}