当前位置: 技术问答>java相关
关于自己写程序打包jar文件的问题!
来源: 互联网 发布时间:2015-05-16
本文导语: 将一jar文件打开后,修改了里面的MANIFEST.MF文件,又将资源文件(一些图象和一些文本文件)替换了一些。请问如何再将它打包成jar文件? 注意:不是用jar这个命令来打包。 而是编写一个java程序,在程序里面读取这...
将一jar文件打开后,修改了里面的MANIFEST.MF文件,又将资源文件(一些图象和一些文本文件)替换了一些。请问如何再将它打包成jar文件?
注意:不是用jar这个命令来打包。
而是编写一个java程序,在程序里面读取这些修改后了的资源文件和class文件,然后把他们打包成另一个名称的jar文件。这样的程序如何写?
注意:不是用jar这个命令来打包。
而是编写一个java程序,在程序里面读取这些修改后了的资源文件和class文件,然后把他们打包成另一个名称的jar文件。这样的程序如何写?
|
java 的ZIP/UNZIP本身就是这样:
import java.util.zip.*;
...
public byte[] zipData(byte[] bySrc)
{
byte[] byZip;
String strTmp = getTmp();
try
{
int iSrc = bySrc.length;
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(strTmp));
out.write(bySrc, 0, iSrc);
//System.out.println("write length = " + iSrc);
try{ out.close(); } catch(Exception exclose){}
}
catch(FileNotFoundException e)
{
System.err.println("FileNotFoundException: " + e.toString());
return bySrc;
}
catch(IOException eio)
{
System.err.println("IOException: " + eio.toString());
return bySrc;
}
try
{
FileInputStream in = new FileInputStream(strTmp);
int ilen = in.available();
byZip = new byte[ilen];
int iRet = in.read(byZip, 0, ilen);
if (ilen != iRet)
{
System.err.println("ZipFile read error!");
try{ in.close(); } catch(Exception exclose){}
return bySrc;
}
}
catch(FileNotFoundException e)
{
System.err.println("FileNotFoundException: " + e.toString());
return bySrc;
}
catch(IOException eio)
{
System.err.println("IOException: " + eio.toString());
return bySrc;
}
return byZip;
}
...
import java.util.zip.*;
...
public byte[] zipData(byte[] bySrc)
{
byte[] byZip;
String strTmp = getTmp();
try
{
int iSrc = bySrc.length;
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(strTmp));
out.write(bySrc, 0, iSrc);
//System.out.println("write length = " + iSrc);
try{ out.close(); } catch(Exception exclose){}
}
catch(FileNotFoundException e)
{
System.err.println("FileNotFoundException: " + e.toString());
return bySrc;
}
catch(IOException eio)
{
System.err.println("IOException: " + eio.toString());
return bySrc;
}
try
{
FileInputStream in = new FileInputStream(strTmp);
int ilen = in.available();
byZip = new byte[ilen];
int iRet = in.read(byZip, 0, ilen);
if (ilen != iRet)
{
System.err.println("ZipFile read error!");
try{ in.close(); } catch(Exception exclose){}
return bySrc;
}
}
catch(FileNotFoundException e)
{
System.err.println("FileNotFoundException: " + e.toString());
return bySrc;
}
catch(IOException eio)
{
System.err.println("IOException: " + eio.toString());
return bySrc;
}
return byZip;
}
...
|
那你应该首先去研究JAR命令是怎么实现的。
|
在jbuilder中进入
Wizards->Archive Builder
看看行不行
Wizards->Archive Builder
看看行不行
|
java.util.jar.JarFile
|
用winzip生成一个.zip文件,再将后缀改为.jar。
|
jar命令打包生成可执行的jar是需要加一些参数的,而且manifest的格式和内容有要求,具体的内容我忘了,记得很多文章都说了,自己找找吧。
|
反编译哦
|
jdk的apidoc里有帮助