java – 如何在另一个jar中获取资源
我有一个嵌入在一个包中的jar,需要获取与它一起打包的资源,如下所示:
MyBundle - src -lib -MyEmbeddedJar -src -SomeClass -someResource.xml 我试图从’SomeClass’访问’someResource.xml’,如下所示: SomeClass.class.getResource( "someResource.xml" ); 但我没有运气.我已经尝试了附加CWD的几个变体(例如:’./ someResource.xml’),但我无法加载此资源. 我知道“正确”的方法是使用Activator来获取正确的类加载器,但嵌入式jar可以在其他项目中使用,所以我不想为了获得它而必须添加OSGi特定代码与OSGi玩得很好. 有没有其他方法可以在OSGi的OSGi中加载资源? 解决方法
我假设SomeClass位于嵌入式jar中(例如somejar.jar),someResource.xml位于外部jar中,位于lib目录中.
在这种情况下,无法在非OSGi上下文中实现这一点.让我们孤立地看一下这两种情况. 在OSGi中 使用常规(非特定于OSGi)的资源加载机制可以很好地访问someResource.xml,前提是可以从Bundle-ClassPath访问它.例如,如果您有以下清单标题, Bundle-ClassPath: .,somejar.jar 您将能够使用“lib / someResource.xml”访问您的资源. 不使用OSGi 如果您没有使用OSGi,那么就没有(相当简单的)方法来获取我所知道的内部jar中的类和资源. 你的选择 根据您希望捆绑包的外观,您现在有两种选择. > SomeClass是否真的有必要在嵌入式jar中?如果是这样,你就会感到茫然,而你的jar只会使用OSGi. 就个人而言,我会选择选项2:除非你有资源在你’合并’罐子时可能会互相覆盖,所以在你的包里面有一点点资源是没有问题的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |