Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java程序中读取特定类路径jar的清单文件_Java_Jar_Manifest - Fatal编程技术网

如何在java程序中读取特定类路径jar的清单文件

如何在java程序中读取特定类路径jar的清单文件,java,jar,manifest,Java,Jar,Manifest,我能够读取java程序中所有类路径JAR的清单文件。但我想读一个特定jar的清单文件,比如“xml-api-1.0.b2.jar”,它是如何实现的 我的工作代码是 Enumeration resEnum; try{ resEnum =Thread.currentThread().getContextClassLoader().getResources(JarFile.MANIFEST_NAME); while (resEnum.hasMoreElements()) {

我能够读取java程序中所有类路径JAR的清单文件。但我想读一个特定jar的清单文件,比如“xml-api-1.0.b2.jar”,它是如何实现的

我的工作代码是

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 vendor = mainAttribs.getValue("Implementation-Vendor");
                String version = mainAttribs.getValue("Implementation-Version");
                if(!mainAttribs.getValue("Extension-Name").equals("null")){
                    System.out.println(mainAttribs.getValue("Implementation-Title"));
                                           System.out.println(version);
                    System.out.println(vendor);
                    System.out.println(mainAttribs.getValue("Extension-Name"));
                }
                }
            }catch(Exception e){}
    }
    }catch(Exception e){
您必须使用类并使用方法获取清单。

您可以尝试此方法

if (url.getFile().contains("xml-apis-1.0.b2.jar")) {
    ...
}

“C:/maven_repo/log4j/log4j/1.2.17/log4j-1.2.17.jar”这是log4j库的路径,我使用的代码类似于final File f=new File(“C:/maven_repo/log4j/log4j/1.2.17/log4j-1.2.17.jar”);JarFile jar=新的JarFile(f);Manifest=jar.getManifest();但是我无法读取清单属性,所有属性都为空,我是Geeting是否引发了任何异常?这段代码在Linux机器上运行,因为jar可能缺少一些东西,但是这如何帮助获取清单的内容呢?它只是帮助选择所需的jar,这就是问题所在。