【问题标题】:How to load a resource from disk in OSGI environment如何在 OSGI 环境中从磁盘加载资源
【发布时间】:2015-07-12 17:42:31
【问题描述】:

第 1 部分:我一直在尝试使用捆绑类加载器将 (XML) 文件作为资源从磁盘加载。我不能事先将文件打包成一个包,因为它将在运行时生成。我也尝试过搜索,几乎总是有人谈论从捆绑包中加载资源(相同或不同)。那么甚至可以使用捆绑类加载器在 OSGi 环境中从磁盘加载资源吗?如果是,怎么做?

第 2 部分:现在我需要在上面添加一个约束。在我的完整场景中,当我生成文件时,它将由第三方包加载。在这种情况下,可以做些什么(在某个位置生成,对类路径进行任何更改等)以便第三方包的类加载器可以找到生成的文件?

使用:apache karaf 3.0.2、ubuntu 12。

【问题讨论】:

    标签: resources osgi disk


    【解决方案1】:

    第 1 部分:

    那么甚至可以在 OSGi 环境中使用捆绑类加载器从磁盘加载资源吗?

    资源(类路径上的只读文件)可以用类加载器加载,而不是来自磁盘任何文件夹的普通文件。当你想处理来自 ClassPath 的文件内容时,你应该使用类加载器。

    您想要生成一个临时文件(在运行时生成和处理),因此您应该为此使用标准 Java API:

    File myTmpFile = File.createTempFile(...);
    

    更多信息,请参见该函数的javadoc:https://docs.oracle.com/javase/7/docs/api/java/io/File.html#createTempFile(java.lang.String,%20java.lang.String)

    第 2 部分:

    第三个包应该有一个 API,可以接受 File、URL、Path 或其他可以指向文件系统中文件的类型实例。

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      相关资源
      最近更新 更多