自己用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包小工具"提供了一个快速且实用的解决方案。 总之,这个小工具通过批处理脚本和参数文件实现了自动化JAR打包,节省了开发者的时间,提高了工作效率。它适用于那些不需复杂...
【标题】:“自己用的一些JAVA工具类做成的jar包” 这个标题表明这是一款个人开发者创建的Java工具类库,已经被打包成JAR(Java Archive)文件格式,方便在不同的Java项目中复用。JAR文件是Java平台特有的归档文件...
其次,这个jar包还包含了源码,这意味着开发者可以查看并理解这些工具类的内部实现。这对于学习Java编程技巧、优化代码或者根据实际需求扩展功能非常有帮助。开发者可以查看源码,了解某个方法的具体实现,或者在...
学习这个jar包,可以深入了解其内部实现原理,如何集成到自己的项目中,以及如何自定义配置以适应不同的数据库环境。 总结起来,DBUtil工具类是Java开发中的得力助手,它简化了数据库操作,提高了开发效率,同时也...
可以使用Java内置的`JarFile`类来实现这一功能,也可以借助第三方工具,例如`jdgui_0.3.6`,它是一个可视化的反编译工具,能够帮助开发者查看`jar`包内的类文件源代码。 3. **加载**:在Java程序中,`ClassLoader`...
"常用工具类jar包"是一个集合了各种实用工具方法的库,主要包含了字符串处理、JSON转换处理、订单实体类以及商品库客户端调用的封装。下面将对这些知识点进行详细解释: 1. **字符串处理封装**: 字符串处理是编程...
这个"ssm完整javaweb项目jar包"包含了运行一个基于SSM框架的Web应用程序所必需的库文件。 1. **Spring框架**:Spring是Java企业级应用的核心框架,提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等核心功能...
在Spring Boot应用开发中,有时候我们需要将多个独立的Spring Boot项目合并到一个单一的jar包中,以便于管理和部署。这个过程通常被称为多项目打包。本文将深入探讨如何实现Spring Boot多项目打包,并提供相关源代码...
在这个场景中,"webservice接口调用工具类依赖jar包"指的是为了实现对WebService接口的调用,我们需要在项目中引入特定的Java库(jar包)作为依赖。 首先,理解WebService的基本概念。WebService是一种基于开放标准...
反编译是将已编译的字节码(如Java的.class文件)转换回源代码的过程,这有助于我们理解代码的工作原理,尤其是在开源项目中遇到只提供编译后jar包的情况。描述中的“很好用,各种jar包各种反编译,叮叮当当叮叮当当...
这就是“打jar包工具”的用途,比如Eclipse IDE内置的Export功能,或者IntelliJ IDEA的Artifacts设置,它们都可以方便地创建和配置`.jar`包。 对于描述中提到的`xpiMake`,它可能是这样一个工具,允许开发者通过...
标题中的"工具类的jar包集合"指的是一个包含多种实用工具类的Java库,这些类在不同的项目中可以被重复使用以提高开发效率。描述提到这是个人在学习过程中整理的集合,表明这是一个开发者为了方便自己和他人在多个...
为了在Maven项目中使用这个Excel工具类jar包,我们需要将其作为项目的依赖添加到pom.xml文件中。假设该jar包在Maven中央仓库中可用,我们可以在pom.xml中添加类似以下的依赖条目: ```xml <groupId>...
核心工具是`jarjar-1.4.jar`,这是一个开源工具,专门用于重命名或移动Java类,以便在一个项目中整合多个jar包。通过更改类的包名,我们可以确保即使原始类名相同,也不会相互干扰。`jarjar`的工作原理是通过规则...
在这个“android studio项目打jar包脚本.rar”压缩包中,包含了一个用于简化在Android Studio中创建JAR库文件的自动化脚本。JAR(Java ARchive)文件是Java平台上的一个标准归档格式,通常用于封装Java类库,便于...
传统的解决方法是调整项目依赖管理,但有时这并不容易实现,特别是当旧版本jar包已经深度集成到项目中时。 `jarjar.jar` 是这个重命名工具的实际执行文件。使用它,开发者可以将新的jar包版本重命名为一个独特的...
"工具类和jar包.zip"压缩包中包含了三个关键组件:JDBC工具类、CommonUtils通用工具类以及VerifyCode验证码工具类,同时还有用于JavaWeb教学的jar包。下面将详细阐述这些知识点。 首先,JDBC(Java Database ...
本资源"Springboot项目正确打jar包maven版pom.rar"是针对SpringBoot项目使用Maven打包成可执行JAR文件的配置示例。 在SpringBoot项目中,我们通常使用Maven作为构建工具,因为它提供了强大的依赖管理和构建生命周期...
总的来说,`sqlite数据库操作工具类(含jsqlite.jar包)`提供了便捷的方式来管理SQLite数据库,简化了Java应用程序中的数据库操作。通过`DBManager.java`工具类,开发者可以快速集成SQLite功能,而无需深入了解底层的...
然而,有时候我们需要将本地的jar包安装到Maven仓库,以便于在项目中引用,这就是“maven-install-jar-tool”所解决的问题。 “maven-install-jar-tool”是一个实用的工具,其主要功能是帮助开发者将本地的jar文件...