gpt4 book ai didi

java - 如何: Locate a Resource file within a JAR file without knowing the name and location upfront

转载 作者:行者123 更新时间:2023-12-01 15:15:00 25 4
gpt4 key购买 nike

一般问题:在 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 ,但这需要一个类/接口(interface)名称来查找。这不是我现在正在寻找的。

有什么想法可以确保 Jar-AJar-B在搜索预先未知的资源时保持解耦?

注意:这不是某种服务加载程序或扩展机制,因为那将是相反的:Jar-B需要通过Jar-A找到。这里的情况并非如此。 Jar-A不知道 Jar-B 的存在.

希望有人已经遇到过这个“问题”。请分享您的想法...谢谢!

JAR 规范链接:here

最佳答案

JAR 是 ZIP。 Java 具有良好的 native 支持 - 看起来足够可靠 - 可以打开 JAR-A 并浏览其中的文件(ZipFile.entries 枚举。)

假设您可以在文件系统上找到 JAR-A,从您的描述来看,我猜测 JAB-B 确切地知道 JAR-A 所在的位置。

关于java - 如何: Locate a Resource file within a JAR file without knowing the name and location upfront,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11746486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com