gpt4 book ai didi

java - MANIFEST.MF 属性返回 null

转载 作者:行者123 更新时间:2023-12-04 18:00:11 26 4
gpt4 key购买 nike

我试图从 MANIFEST.MF 文件中获取一些属性,但它们返回 null。

list

Manifest-Version: 1.0

Archiver-Version: Plexus Archiver
Built-By: jenkins
Build-Time: 2016-04-09T18:02:46Z Class-Path: spigot-1.8-R0.1-SNAPSHOT.jar Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_77

Name: Build Details
Implementation-SCM-Revision: SomeCommit
Implementation-Build-Number: SomeBuildNumber
Implementation-Title: SomeTitle
Implementation-Version: 4.0.0-SNAPSHOT

代码(此代码与使用的代码不完全相同,但几乎相同)

第一次尝试

 public void doStuff() {
String version;
InputStream stream = Main.class.getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF");
Properties properties = new Properties();

if (stream != null) {
try {
properties.load(stream);

version = properties.getProperty("Implementation-SCM-Revision"); //This is null
} catch (IOException ex) {
//TODO handle exception
}
}

第二次尝试

public void doStuff() {
Enumeration resEnum;
try {
resEnum = Thread.currentThread().getContextClassLoader().getResources(JarFile.MANIFEST_NAME);
while (resEnum.hasMoreElements()) {
try {
URL url = (URL)resEnum.nextElement();
InputStream is = url.openStream();
if (is != null) {
Manifest manifest = new Manifest(is);
Attributes mainAttribs = manifest.getMainAttributes();
String version = mainAttribs.getValue("Implementation-SCM-Revision"); //This is null
}
}
catch (Exception e) {
}
}
} catch (IOException e1) {
}
}

问题是,当打印 Attributes#getMainAttributes() 中的所有键时,它会打印 [Archiver-Version, Implementation-Title, Sealed, Specification-Version, Implementation-Version, Created-By, Manifest- Version, Build-Jdk, Specification-Vendor, Implementation-Vendor, Ant-Version, Specification-Title, Built-By, Main-Class],不包括Implementation-SCM-Revision。这就是我想要得到的。

没有生成堆栈跟踪,它只是在打印 Implementation-SCM-Revision 属性时在控制台打印 null

最佳答案

Oracle 设法打破了 Manifest 类,尽管这很困难:
JDK-8201636 null value when trying to read manifest file attributes

另请参阅 MANIFEST entires 的类似错误:
JDK-8031748 Clarify jar entry orders in a jar file :

From the beginning, the jar file has an “undocumented” assumption thatthe MANIFEST.MF file and signature-related files (block and SF) shouldappear at the beginning (except for directory entries, say,META-INF/).

关于java - MANIFEST.MF 属性返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36529228/

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