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

    利用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文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值