0

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

我的捆绑清单。我正在尝试添加 config/ 文件夹。

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/
4

1 回答 1

0

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

那么很可能您不会正确加载捆绑/插件资源,这需要与常规 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();
}
于 2012-12-21T21:45:10.273 回答