如何从清单中获取条目.与jar捆绑的Mf文件



我遵循阅读我自己的Jar's清单指南,以编程方式获取清单条目。

我正在用maven-assembly-plugin构建jar文件。Manifest文件位于jar文件的META-INF/MANIFEST.MF目录下。

问题是,我得到空条目在任何情况下。我试图使用JarFile加载,使用ClassLoaderResources不生效。

但是,如果添加额外的条目到pom文件,使用然后我可以读取这些条目,如果它们在单独的部分(用额外的换行符分隔)。

如果我将条目添加到主属性部分,那么它们是不可见的。

是否可能由于某些安全原因,以编程方式显示读取。Mf文件被禁用?

我不知道为什么你不能找到你的清单条目没有额外的依赖关系,但你不应该有任何问题从一个清单读取。我是这样做的:

private static final String MANIFEST_FILE_KEY = "META-INF/MANIFEST.MF";
......
        try (JarFile jar = new JarFile(URLDecoder.decode(jarFileURL.getPath(), "UTF-8"))) {
            Enumeration<JarEntry> entries = jar.entries();
            while (entries.hasMoreElements()) {
                JarEntry entry = entries.nextElement();
                if (entry.getName().equals(MANIFEST_FILE_KEY)){
                    //found our manifest
                    Manifest manifest = new Manifest(jar.getInputStream(entry));
                    Attributes attributes = manifest.getMainAttributes();
                    for (Entry<Object, Object> key : attributes.entrySet()) {
                        //do something with the key values
                    }
                    break;
                }
            }
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }

最新更新