gpt4 book ai didi

java - 访问同一个 jar 中的属性文件

转载 作者:行者123 更新时间:2023-11-30 02:24:30 25 4
gpt4 key购买 nike

我们所有的 jar 都包含一个特定的文件 version.properties,其中包含构建中的特定信息。

当我们从命令行启动一个 jar(在类路径上有多个 jar)时,我们希望从同一个 jar 访问version.properties。更准确地说:我们希望编写 Java 代码,为我们提供调用类文件所在的 jar 中的属性文件的内容。

问题是类路径上的所有 jar 都包含 version.properties 并且我们不想读取类路径上的第一个,而是读取正确 jar 中的那个。我们怎样才能实现这一目标?

最佳答案

有趣的问题。您必须找到特定 jar 的代表性类的位置,并使用结果来构建属性文件的 URL。我使用 String.class 作为示例编写了一个示例,并访问 META-INF 中的 MANIFEST.MF,因为 rt.jar 中没有属性(至少有一个快速 jar tf rt.jar | grep properties 结果为零)

    Class clazz = String.class;
String name = clazz.getName().replace('.', '/') + ".class";
System.out.println(name);
String loc = clazz.getClassLoader().getResource(name).toString();
System.out.println(loc);
if (loc.startsWith("jar:file")) {
String propertyResource = loc.substring(0, loc.indexOf('!')) + "!" + "/META-INF/MANIFEST.MF";
InputStream is = new URL(propertyResource).openStream();
System.out.println(propertyResource);
Properties props = new Properties();
props.load(is);
System.out.println(props.get("Implementation-Title"));
}

关于java - 访问同一个 jar 中的属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46000923/

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