`
Ryan200909
  • 浏览: 9002 次
社区版块
存档分类
最新评论

实现自己的项目打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() ;
				}
			}
		}
	}
	
}
分享到:
评论

相关推荐

    java实现http协议jar包

    java实现http协议jar包,是一个访问http协议工具类,导入全部jar包到项目里面,调用httpRequest方法及可实现http协议访问,以及获取代理IP方法封装

    eclipse工具类db.jar

    eclipse项目工程建立以及实现的工程中,需要的jar包工具类。

    SpringBoot项目Jar包加密防止反编译详细讲解(值得珍藏)

    本文介绍了如何对 SpringBoot 项目进行 Jar 包加密,以防止反编译。通过使用代码混淆和加密字节码等技术,可以有效地保护源代码的安全性,降低被恶意攻击的风险。然而,需要注意的是,混淆和加密并不能完全防止反...

    Commons-dbutils1.7 jar包.rar

    简单来讲,这个工具包就是用来更加方便我们操作数据库的,最近工作中使用了一下,感觉确实方便很多,基本告别自己封装JDBC代码对数据库进行增删改查了。代码看着也很简洁。 例如: 增删改查使用的类:QueryRunner类+...

    将项目打成war包

    打包:将编译后的*.calss文件打包成 jar或war包; 部署:将打包后的war文件部署到制定的web应用服务器中去。(tomcat的webappers中去) ******************************* ant默认执行build.xml文件 ant是使用的java...

    java开发常用jar包

    Apache Commons包中的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-collections.jar Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 commons-lang.jar Apache ...

    pinyin4j工具类和jar包

    在C++中可以用STL里面的multimap来解决这个问题,但Java中没有类似multimap这样的东西,除非自己实现一个。 Pinyin4j就是为了解决类似这样的问题的。它是sourceforge.net上的一个开源项目,功能非常强大: + ...

    Java实现Zip压缩文件操作的工具类.zip

    Java实现Zip压缩文件操作的工具类 文章介绍:https://blog.csdn.net/rongbo91/article/details/117747042 (可作为Jar依赖包直接使用) 1、项目使用前,请进入rdc-bom目录下,执行mvn clean install命令  2、可...

    基于XStream,DOM4J实现xml工具类可直接运行

    基于XStream,DOM4J实现xml多种工具类,项目中jar包已齐全 可直接运行。希望对大家有所帮助

    java实现拖拉验证码工具类

    实现功能:传入路径,返回base64图片编码(原图抠图及滑块图)、图片坐标值、...使用方法:1、将jar包导入项目中; 2、调用工具类 ImageVo imageVo = GraphicCodeUtil.generate("E:\\data\\3322.jpg",width,height);

    Jave插件包和微信音频转码工具类源码,支持Linux系统

    jave包是经过兼容Linux系统重新打包的,jar包和转码工具类都是我项目中亲测过的。可以成功实现音频转码,报一个错误但是不耽误转码。

    apache-commons源码及jar文件

    (附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 JavaBean 映射至 XML 文档,以及相反映射的服务. Chain Chain 提供...

    Android 应用提供SDK Jar包给第三方使用 (设计思路 以及实现步骤)

    最近想总结一下关于应用如何封装自己的SDK给第三方应用使用,提供jar包给第三方使用是现在比较常见的方式,方式有很多种,但是具体的大体思路都是一样的,今天写了一个SDK封装的大体框架Demo,方便后期查查阅: 工具基于...

    maven打包为zip,tar.gz

    非常实用的工具,将maven类java工程打包为zip格式、tar.gz格式,并且实现jar包 配置文件分离,方便部署。

    gson 源代码Jar、工程Jar、API Jar

    最新GSON源文件、API文档和项目用Jar文件。...一个Jar包也要5积分,有一个建议,寻找工具类代码时加上一个github要好很多,不但免费还最新。如问度娘: gson github要好于gson 下载~csdn 没有0积分的了,只好选1了。

    项目构建maven

    java web项目的构建工具。可以实现jar包的依赖管理等。

    SSH实现真分页(注解配置)包含Jar

    项目文件全包含。SSH实现真分页(注解配置),建立简单数据库,直接可跑。做小型项目直接修改就行而且封装了分页工具类哦。由于使用接口较麻烦,没用spring注入,此处声明。

    友盟渠道打包工具.zip

    - CommonTools 共用的工具类,包括对 `Apktool` , `Jarsigner` , `zipalign` 的封装 - UIControls_35 共用的UI类,对大部分控件的样式都是在这里设置的 - UmengMarket Marekt 组件,现在还没有实现 ...

    Javassistjar包

    它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态"AOP"框架。 关于java字节码的处理,目前有很多工具,如bcel,asm。不过这些都需要直接跟虚拟机指令打交道。如果你不想了解...

    Java常用工具包Jodd.zip

    Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大!Jodd = Tools IoC MVC DB AOP TX JSON HTML < 1.5 MbJodd 被分成众多模块,按需选择,其中工具类模块有:jodd-core 一些工具类...

Global site tag (gtag.js) - Google Analytics