我通过jarOutputStream调用API实现,但是貌似改变了,这个jar文件却没有同了  下面是我的部分代码:大家看看,希望有好的实现方法教教我,急 private static void toJarFile(JarFile jarFile, JarOutputStream outjos, File readyFile) throws IOException {
File[] files = readyFile.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
         JarEntry entry =  
      new JarEntry(files[i].getPath().substring(files[i].getPath().indexOf(".tarena")+8+File.separator);       outjos.putNextEntry(entry);
                toJarFile(files[i], outjos);
}else{
System.out.println("文件");
         JarEntry entry =  
         new JarEntry(files[i].getPath().substring(files[i].getPath().indexOf(".tarena")+8)); outjos.putNextEntry(entry);
BufferedReader brin = new BufferedReader(
new InputStreamReader(new FileInputStream(files[i])));
String _line=null;
while((_line=brin.readLine())!=null){
byte[] bts = _line.getBytes();
              outjos.write(bts, 0, bts.length);  //将exam每行的内容写入到当前的entry中
}
            }
//关闭这个entry
outjos.closeEntry();
}
}

解决方案 »

  1.   

    jar 文件你应该认为其是一个只读的。
      

  2.   

    先解压,然后修改,最后打包成jar
      

  3.   

    如果是 修改 class 文件内容可以参见我的资源
    http://download.csdn.net/source/2882395
      

  4.   

    谢了,我觉得把文件解压又打包回去太耗时间和性能了,用户体验不高,所以就不更改JAR包了
    将JAR包解压然后修该文件!但是最初是考虑到系统每次启动都会解压jar会覆盖前面写入的数据
    所以才想直接写到jar包里面的,现在处理了下 可以解压,但让他不能改动我修改过的文件 呵呵