打开zip时清单包含的内容与Java返回的内容之间存在差异
我使用Ant创建了一个包含Jar的Jar 从Ant脚本中提取:打开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
<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
-----------