Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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
打开zip时清单包含的内容与Java返回的内容之间存在差异_Java_Jar_Manifest - Fatal编程技术网

打开zip时清单包含的内容与Java返回的内容之间存在差异

打开zip时清单包含的内容与Java返回的内容之间存在差异,java,jar,manifest,Java,Jar,Manifest,我使用Ant创建了一个包含Jar的Jar 从Ant脚本中提取: <target name="create_run_jar"> <tstamp><format property="buildTime" pattern="yyyy/MM/dd hh:mm:ss"/></tstamp> <jar destfile="${dir.jarfile}/MyJar.jar"> <mani

我使用Ant创建了一个包含Jar的Jar

从Ant脚本中提取:

 <target name="create_run_jar">
        <tstamp><format property="buildTime" pattern="yyyy/MM/dd hh:mm:ss"/></tstamp>
        <jar destfile="${dir.jarfile}/MyJar.jar">
            <manifest>
                <attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
                <attribute name="Rsrc-Main-Class" value="com.qantas.Converter"/>
                <attribute name="Class-Path" value="."/>
                <attribute name="Rsrc-Class-Path" value="./ java-getopt-1.0.12.jar jug.jar log4j-1.2.15.jar xom-1.2.6.jar junit.jar org.hamcrest.core_1.3.0.v201303031735.jar cupv10k-runtime.jar org.eclipse.wst.xml.xpath2.processor_1.1.0.jar xml-apis.jar serializer.jar xercesImpl.jar xercesSamples.jar"/>
                <attribute name="Build-Time" value=" ${buildTime}"/>
            </manifest>
            <zipfileset src="jar-in-jar-loader.zip"/>
            <fileset dir="${dir.buildfile}/target/classes"/>
            <fileset dir="${dir.buildfile}/target/test-classes"/>
            <zipfileset dir="${dir.buildfile}/third_party_jars" includes="java-getopt-1.0.12.jar"/>
现在,当我试图读取清单并访问“构建时间”时,我找不到它

这是我用来读取清单的代码。有过多的代码显示某些资源已正确读取

Enumeration<URL> resources = ConversionConstants.class.getClassLoader().getResources("META-INF/MANIFEST.MF");
while (resources.hasMoreElements()) 
{
    URL url = resources.nextElement();  
    System.out.println(" Url " + url.toString());

    try
    {
        Manifest manifest = new Manifest(url.openStream());
        Attributes mainAttributes = manifest.getMainAttributes();
        System.out.println(" Created by ? " + mainAttributes.getValue("Created-By"));
        System.out.println(" Build-Time ? " + mainAttributes.getValue("Build-Time"));
        System.out.println("-----------");
        System.out.println("");
    }
    catch (Exception e)
    {
        System.err.println(" Could not open URL " + url + ", " + e);
    }
}
我希望Url rsrc:META-INF/MANIFEST.MF包含我的构建时间:,但没有。。。(对于主jar中的其他jar,构建时间为空是很正常的。)还要注意,rsrc:META-INF/MANIFEST.MF的
创建者?
字符串与我打开Zip/jar文件并显示(顶部)清单内容时看到的不匹配


发生了什么事?

您是否尝试过调试和单步执行?当您为没有报告您的示例的jar获取它时,
maintattributes
中有什么内容?是的,我已经显示了maintattributes的内容:>清单版本:1.0>Ant版本:ApacheAnt 1.8.2>创建人:1.8.0_40-b27(Oracle公司)>Nbr属性3(我想知道问题是否是由JarijarLoader引起的…)
Enumeration<URL> resources = ConversionConstants.class.getClassLoader().getResources("META-INF/MANIFEST.MF");
while (resources.hasMoreElements()) 
{
    URL url = resources.nextElement();  
    System.out.println(" Url " + url.toString());

    try
    {
        Manifest manifest = new Manifest(url.openStream());
        Attributes mainAttributes = manifest.getMainAttributes();
        System.out.println(" Created by ? " + mainAttributes.getValue("Created-By"));
        System.out.println(" Build-Time ? " + mainAttributes.getValue("Build-Time"));
        System.out.println("-----------");
        System.out.println("");
    }
    catch (Exception e)
    {
        System.err.println(" Could not open URL " + url + ", " + e);
    }
}
Url rsrc:META-INF/MANIFEST.MF
 Created by ? 1.8.0_40-b27 (Oracle Corporation)
 Build-Time ? null
-----------

 Url jar:rsrc:java-getopt-1.0.12.jar!/META-INF/MANIFEST.MF
 Created by ? 0.92-gcc
 Build-Time ? null
-----------

 Url jar:rsrc:jug.jar!/META-INF/MANIFEST.MF
 Created by ? 1.4.0_01 (Sun Microsystems Inc.)
 Build-Time ? null
-----------

 Url jar:rsrc:log4j-1.2.15.jar!/META-INF/MANIFEST.MF
 Created by ? Apache Maven
 Build-Time ? null
-----------

 Url jar:rsrc:xom-1.2.6.jar!/META-INF/MANIFEST.MF
 Created by ? 1.6.0_20-b02-279-10M3065 (Apple Inc.)
 Build-Time ? null
-----------

 Url jar:rsrc:junit.jar!/META-INF/MANIFEST.MF
 Created by ? Apache Maven 3.0.4
 Build-Time ? null
-----------

 Url jar:rsrc:org.hamcrest.core_1.3.0.v201303031735.jar!/META-INF/MANIFEST.MF
 Created by ? null
 Build-Time ? null
-----------

 Url jar:rsrc:cupv10k-runtime.jar!/META-INF/MANIFEST.MF
 Created by ? 1.4.1-p4 (Sun Microsystems Inc.)
 Build-Time ? null
-----------

 Url jar:rsrc:org.eclipse.wst.xml.xpath2.processor_1.1.0.jar!/META-INF/MANIFEST.MF
 Created by ? null
 Build-Time ? null
-----------

 Url jar:rsrc:xml-apis.jar!/META-INF/MANIFEST.MF
 Created by ? 1.3.1 (IBM Corporation)
 Build-Time ? null
-----------

 Url jar:rsrc:serializer.jar!/META-INF/MANIFEST.MF
 Created by ? 1.3.1 (IBM Corporation)
 Build-Time ? null
-----------

 Url jar:rsrc:xercesImpl.jar!/META-INF/MANIFEST.MF
 Created by ? 1.4.2 (IBM Corporation)
 Build-Time ? null
-----------

 Url jar:rsrc:xercesSamples.jar!/META-INF/MANIFEST.MF
 Created by ? 1.4.2 (IBM Corporation)
 Build-Time ? null
-----------