使用J2SE处理Jar时生成Jar和Jad无内容

来源:互联网 发布:ip网络电话软件 编辑:程序博客网 时间:2024/04/30 23:41

    利用J2SE中的java.util.jar处理Jar文件,有时生成的Jad文件和manifest文件没有任何内容,有时根本就没有manifest文件。原因有以下三种情况。

1、            生成的manifest文件无内容

JarOutputStream有两个构造方法:

public JarOutputStream(OutputStream out, Manifest man) throws IOException

public JarOutputStream(OutputStream out) throws IOException

使用带有Manifest man参数的方法创建JarOutputStream时能够成功创建,也能够生成Jar文件,但是Jar中的manifest文件没有内容,Debug跟踪发现传入Manifest man也有内容。解决办法是使用没有Manifest man的方法创建JarOutputStreammanifest文件当做普通文件去复制。

2、            生成的Jad文件无内容

Manifest有个public void write(OutputStream out) throws IOException方法把Manifest文件的内容写入到OutputStream中。生成Jad时,创建JadOutputStream后,调用Manifestwrite方法写入到Jad中。有时生成的Jad文件无内容。解决方法是读取Manifest的内容,创建字符串,直接写入到根据Jad创建的OutputStream中。

3、            没有manifest文件

解决了1中的问题后,处理某些Jar时发现根本就没有Manifest文件。根据Jar文件创建的JarInputStream使用getNextJarEntry逐个读取Jar中的文件时,根本就没有manifest文件。解决办法是跟踪文件的复制过程,如果没有manifest文件就直接从根据Jar创建JarFile对象,从JarFile对象中读取manifest文件,再使用JarFilegetInputStream方法读取manifest文件。

原创粉丝点击