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

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

相关推荐

    打Jar包小工具,运行cmd.bat自动打jar包

    不过,对于小型项目或者临时需求,"打Jar包小工具"提供了一个快速且实用的解决方案。 总之,这个小工具通过批处理脚本和参数文件实现了自动化JAR打包,节省了开发者的时间,提高了工作效率。它适用于那些不需复杂...

    自己用的一些JAVA工具类做成的jar包

    【标题】:“自己用的一些JAVA工具类做成的jar包” 这个标题表明这是一款个人开发者创建的Java工具类库,已经被打包成JAR(Java Archive)文件格式,方便在不同的Java项目中复用。JAR文件是Java平台特有的归档文件...

    java常用工具类已经打成jar包包含源码

    其次,这个jar包还包含了源码,这意味着开发者可以查看并理解这些工具类的内部实现。这对于学习Java编程技巧、优化代码或者根据实际需求扩展功能非常有帮助。开发者可以查看源码,了解某个方法的具体实现,或者在...

    DBUtil工具类jar包

    学习这个jar包,可以深入了解其内部实现原理,如何集成到自己的项目中,以及如何自定义配置以适应不同的数据库环境。 总结起来,DBUtil工具类是Java开发中的得力助手,它简化了数据库操作,提高了开发效率,同时也...

    jar包解析工具

    可以使用Java内置的`JarFile`类来实现这一功能,也可以借助第三方工具,例如`jdgui_0.3.6`,它是一个可视化的反编译工具,能够帮助开发者查看`jar`包内的类文件源代码。 3. **加载**:在Java程序中,`ClassLoader`...

    常用工具类jar包

    "常用工具类jar包"是一个集合了各种实用工具方法的库,主要包含了字符串处理、JSON转换处理、订单实体类以及商品库客户端调用的封装。下面将对这些知识点进行详细解释: 1. **字符串处理封装**: 字符串处理是编程...

    ssm完整javaweb项目jar包

    这个"ssm完整javaweb项目jar包"包含了运行一个基于SSM框架的Web应用程序所必需的库文件。 1. **Spring框架**:Spring是Java企业级应用的核心框架,提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等核心功能...

    springboot 多项目打包 jar包教程,包含源代码

    在Spring Boot应用开发中,有时候我们需要将多个独立的Spring Boot项目合并到一个单一的jar包中,以便于管理和部署。这个过程通常被称为多项目打包。本文将深入探讨如何实现Spring Boot多项目打包,并提供相关源代码...

    webservice接口调用工具类依赖jar包

    在这个场景中,"webservice接口调用工具类依赖jar包"指的是为了实现对WebService接口的调用,我们需要在项目中引入特定的Java库(jar包)作为依赖。 首先,理解WebService的基本概念。WebService是一种基于开放标准...

    jar包反编译工具看jar包源码必备

    反编译是将已编译的字节码(如Java的.class文件)转换回源代码的过程,这有助于我们理解代码的工作原理,尤其是在开源项目中遇到只提供编译后jar包的情况。描述中的“很好用,各种jar包各种反编译,叮叮当当叮叮当当...

    打jar包工具(classes打包工具)

    这就是“打jar包工具”的用途,比如Eclipse IDE内置的Export功能,或者IntelliJ IDEA的Artifacts设置,它们都可以方便地创建和配置`.jar`包。 对于描述中提到的`xpiMake`,它可能是这样一个工具,允许开发者通过...

    工具类的jar包集合

    标题中的"工具类的jar包集合"指的是一个包含多种实用工具类的Java库,这些类在不同的项目中可以被重复使用以提高开发效率。描述提到这是个人在学习过程中整理的集合,表明这是一个开发者为了方便自己和他人在多个...

    excel工具类jar包

    为了在Maven项目中使用这个Excel工具类jar包,我们需要将其作为项目的依赖添加到pom.xml文件中。假设该jar包在Maven中央仓库中可用,我们可以在pom.xml中添加类似以下的依赖条目: ```xml <groupId>...

    jar包修改神器.rar

    核心工具是`jarjar-1.4.jar`,这是一个开源工具,专门用于重命名或移动Java类,以便在一个项目中整合多个jar包。通过更改类的包名,我们可以确保即使原始类名相同,也不会相互干扰。`jarjar`的工作原理是通过规则...

    android studio项目打jar包脚本.rar

    在这个“android studio项目打jar包脚本.rar”压缩包中,包含了一个用于简化在Android Studio中创建JAR库文件的自动化脚本。JAR(Java ARchive)文件是Java平台上的一个标准归档格式,通常用于封装Java类库,便于...

    jar包名重命名工具

    传统的解决方法是调整项目依赖管理,但有时这并不容易实现,特别是当旧版本jar包已经深度集成到项目中时。 `jarjar.jar` 是这个重命名工具的实际执行文件。使用它,开发者可以将新的jar包版本重命名为一个独特的...

    工具类和jar包.zip

    "工具类和jar包.zip"压缩包中包含了三个关键组件:JDBC工具类、CommonUtils通用工具类以及VerifyCode验证码工具类,同时还有用于JavaWeb教学的jar包。下面将详细阐述这些知识点。 首先,JDBC(Java Database ...

    Springboot项目正确打jar包maven版pom.rar

    本资源"Springboot项目正确打jar包maven版pom.rar"是针对SpringBoot项目使用Maven打包成可执行JAR文件的配置示例。 在SpringBoot项目中,我们通常使用Maven作为构建工具,因为它提供了强大的依赖管理和构建生命周期...

    sqlite数据库操作工具类(含jsqlite.jar包)

    总的来说,`sqlite数据库操作工具类(含jsqlite.jar包)`提供了便捷的方式来管理SQLite数据库,简化了Java应用程序中的数据库操作。通过`DBManager.java`工具类,开发者可以快速集成SQLite功能,而无需深入了解底层的...

    maven安装jar包工具

    然而,有时候我们需要将本地的jar包安装到Maven仓库,以便于在项目中引用,这就是“maven-install-jar-tool”所解决的问题。 “maven-install-jar-tool”是一个实用的工具,其主要功能是帮助开发者将本地的jar文件...

Global site tag (gtag.js) - Google Analytics