有一个.jar文件,其中包含了一些类。有一个List.只有在这个类名在这个list里边的类,我才需要。
现在我要把这个.jar文件中的 类名在这个list里边的打成一个另外一个jar包。
如何读取copy.谢谢

解决方案 »

  1.   

    你是双重打包吗?
    人家里面的东西 你只要把他jar包里你需要的源代码提取出来,打成jar就可以了!
      

  2.   

    给楼主两个建议:
    1、有这个jar包的源码的话,直接把需要的类打包进你的jar就行了
    2、没有源码的话,那么你要打包的jar包又用到的别的jar包,你可以在你打包的jar文件内MANIFEST.MF文件内引用别的jar包
      

  3.   

    推荐你用truezip 他可以: 1.在不解压的情况下更改zip文件中的某个文件。 2.在不解压的情况下复制某个文件到指定目录 3.解压某个文件和压缩某个目录。 还有很多功能,你下载一下,参照着文档中的例子写写就可以了。 告诉了你方法,代码自己写就可以了吧。呵呵 
      

  4.   

    如果你是用JBuilder开发工具的话就先导入你要的类,按住CTRL键点你要的类名就可以进入到它的父类,也就是你说的.JAR包中的源文件 
      

  5.   

    study
      

  6.   

    /**
     * 
     */
    package houlei.util;import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Collection;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipOutputStream;/**
     * 首先,Jar文件的格式就是Zip文件的格式;
     * 其次,本代码中没有处理关于META-INF下面的文件。
     * <p/>
     * 该类创建于 2009-6-12 上午09:11:45
     * @version 1.0.0
     * @author 侯磊
     */
    public class ZipFileOperation {
    public static void main(String[] args) throws IOException {
    String srcFileName = "d:\\annotations-api.jar";
    String desFileName = "d:\\mylib.jar";
    Collection<String> fileNames = getTheList();
    operation(srcFileName, desFileName, fileNames);
    } public static void operation(String srcFileName,String destFileName,Collection<String> fileNames) throws IOException{
    ZipFile srcFile = new ZipFile(srcFileName);
    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(destFileName,false));
    byte [] buff = new byte[1024];
    for(String name : fileNames){
    String eName = name.replaceAll("\\.", "/")+".class";
    ZipEntry entry = srcFile.getEntry(eName);
    zos.putNextEntry(entry);
    InputStream is = srcFile.getInputStream(entry);
    int len = 0;
    while((len=is.read(buff))!=-1){
    zos.write(buff, 0, len);
    zos.flush();
    }
    zos.closeEntry();
    }
    zos.close();
    }

    private static List<String> getTheList() {
    List<String> list = new java.util.ArrayList<String>();
    list.add("javax.xml.ws.WebServiceRef");
    list.add("javax.xml.ws.WebServiceRefs");
    return list;
    }}
      

  7.   

    /**
     * 
     */
    package houlei.util;import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Collection;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipOutputStream;/**
     * 首先,Jar文件的格式就是Zip文件的格式;
     * 其次,本代码中没有处理关于META-INF下面的文件。
     * <p/>
     * 该类创建于 2009-6-12 上午09:11:45
     * @version 1.0.0
     * @author 侯磊
     */
    public class ZipFileOperation {
    public static void main(String[] args) throws IOException {
    String srcFileName = "d:\\annotations-api.jar";
    String desFileName = "d:\\mylib.jar";
    Collection<String> fileNames = getTheList();
    operation(srcFileName, desFileName, fileNames);
    } public static void operation(String srcFileName,String destFileName,Collection<String> fileNames) throws IOException{
    ZipFile srcFile = new ZipFile(srcFileName);
    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(destFileName,false));
    byte [] buff = new byte[1024];
    for(String name : fileNames){
    String eName = name.replaceAll("\\.", "/")+".class";
    ZipEntry entry = srcFile.getEntry(eName);
    zos.putNextEntry(entry);
    InputStream is = srcFile.getInputStream(entry);
    int len = 0;
    while((len=is.read(buff))!=-1){
    zos.write(buff, 0, len);
    zos.flush();
    }
    zos.closeEntry();
    }
    zos.close();
    }

    private static List<String> getTheList() {
    List<String> list = new java.util.ArrayList<String>();
    list.add("javax.xml.ws.WebServiceRef");
    list.add("javax.xml.ws.WebServiceRefs");
    return list;
    }}