一般问题:在没有固定位置的 JAR 文件中查找/定位资源文件 (document.xml),甚至文件名也是未知的。
情况:两个 JavaSE 项目,都创建了自己的 JAR 文件。Jar-A
在 jar 中的某处保存一个 xml 文档(位置未知)。Jar-B
想要求JarA
交出文件进行某项操作(例如设置信息)。调用者 Jar-B
不知道资源/文件是如何被调用的,以及它的当前位置在哪里Jar-A
。
要求:Jar-B
应该依赖于资源/文件的固定位置, Jar-A
因为资源可以在Jar-A
. Jar-B
应该询问Jar-A
文件在哪里以及它正在寻找的文件是如何被调用的。
可能的解决方向:该META-INF
目录始终包含一个MANIFETS.MF
带有键/值对的文件。因此,如果我存储一个名为“ResourceLocator”的键和一个类似“org.my.package.ResourceLocator.class”的值,那么Jar-B
可以找到它可以加载的类来实例化一个定位器对象,该对象可以给出正确的名称和位置它正在寻找的文件,对吗?
资源定位器可用于以这种方式查找更多值。
在 中拥有一个资源定位器对象Jar-A
,只需要记录引用“事物”的键,但实际实现与外部世界是分离的。
我想知道这是否是处理这种查找的好方法?我已经知道了Netbeans Lookup API
,但是需要一个类/接口名称来进行查找。这不是我现在正在寻找的。
在搜索未知的资源时如何确保Jar-A
和保持解耦的任何想法?Jar-B
注意:这不是一些服务加载器或扩展机制,因为那将是相反的方式:Jar-B
需要由Jar-A
. 这不是这里的情况。Jar-A
不知道有任何存在Jar-B
。
希望有人已经遇到过这个“问题”。请分享您的想法...谢谢!
链接到 JAR 规范:这里