兑现自己的项目打jar包工具类

实现自己的项目打jar包工具类
自己用java.io.util.jar.*包下面的类写了一个打jar包的工具类,用法如下:

   将以下代码拷贝后在自己项目中新建一个java class(位置任意,只要在当前项目下即可),然后将代码粘贴保存后直接运行,就会在workspace里生成一个与项目名称相同的jar文件。


【Java Code】


-----------------------------------------------


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;
import java.util.logging.Logger;

/**
 * Make Jar util 
 * @author laiyujun@vip.qq.com
 * QQ: 381418273
 *
 */
public class MakeJarUtil {
	
	private Logger log = Logger.getLogger(this.getClass().getName()) ;
	private String path = System.getProperty("java.class.path") ;
	private String currentPath = path  + File.separator + this.getClass().getName().replaceAll("\\.", "\\\\") +".class" ;
	private int i=0 ; // count file ;
	private int j=0 ; // count dir ;
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		MakeJarUtil util = new MakeJarUtil() ;
        if(util.path.indexOf(";") != -1){
			String path[] = util.path.split(";") ;
			util.path = path[0] ;
		}
		util.log.info("classpath:"+ util.path) ;
		
		File file = new File(util.path) ;
		File jarFile = new File(System.getProperty("user.dir") + ".jar") ;
		
		JarOutputStream jarOut =null ;
		long start = System.currentTimeMillis() ;
		try {
			jarOut = new JarOutputStream(new FileOutputStream(jarFile)) ;
			jarOut.setComment("This jar maked by my program") ;
			util.write(file, jarOut) ; //execute zip jar file
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				jarOut.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				long end = System.currentTimeMillis() ;
				util.log.info("zip use total time【"+(end-start)+"ms】") ;
			}
		}
	}

	private void write(File file, JarOutputStream jarOut) throws Exception {
		if(null == file) return ;
		String path = this.path + File.separator ;
		int temp = 0 ;
		InputStream input = null ;
		
		File[] list = file.listFiles() ;
		for (File file2 : list) {
			if(file2.isDirectory()){
				log.info("Dir【"+ path + file2.getName() +"】..." + (++j));
				write(file2, jarOut) ;
			}else{
				if(!file2.getPath().equals(currentPath)){  //current file unzip
					log.info("Zip【"+ file2.getPath() +"】file "+ (++i));
					String parentPath = file2.getAbsolutePath().replace(path, "") ; //get the ref classpath path
					jarOut.putNextEntry(new JarEntry(parentPath)) ;
					input = new FileInputStream(file2) ;
					while((temp = input.read()) != -1){
						jarOut.write(temp) ;
					}
					input.close() ;
				}
			}
		}
	}
	
}