一般问题:在没有固定位置的 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 规范:这里