【问题标题】:OSGI/SPRING - Adding non-source folder to runtime environmentOSGI/SPRING - 将非源文件夹添加到运行时环境
【发布时间】:2012-12-21 21:26:15
【问题描述】:

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

我的捆绑清单。我正在尝试添加 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/

【问题讨论】:

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


    【解决方案1】:

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

    那么您很可能不会正确加载包/插件资源,这需要与常规 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();
    }
    

    【讨论】:

    • 查看我在答案中添加的内容,然后复制/粘贴该方法以在文件夹中加载资源。例如,如果您在插件的根目录中有一个名为 resources 的文件夹,并且该文件夹中的文件 resource1.txt 将是“resources/resource1.txt”,则该路径应该是
    • 嗯,可以,但问题是资源是由 jar 代码读取的。我无法修改代码,它会尝试读取 foo("./resource/resource1.txt")。当它这样做时它会失败。但是,我在我的捆绑中做不到。我对正在发生的事情的看法大多有问题。
    • 这听起来很愚蠢。但是,由于“资源”文件夹被命名为 config,它是否可能无法正常工作?我看到在捆绑包的当前目录中有一个配置文件夹,无论是否导出我的配置“资源”
    • 如果资源是通过jar码读取的,可能有问题。你知道它如何尝试加载配置,就像它在做 Class.getResourceAsStream() 一样,如果它的外部 jar 代码,它如何知道你的包的文件路径?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2015-11-27
    • 2011-07-03
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多