Java动态打Jar包工具类
来源:互联网 发布:redis批量查询数据 编辑:程序博客网 时间:2024/06/16 22:07
import java.io.*;import java.net.*;import java.util.jar.*;import java.util.regex.Matcher;/** * 打Jar包工具类 */public class JarPackageUtil {/** * 动态生成Jar包 */public static File createJar(Class<?> clazz) throws Exception {String clsName = clazz.getName();String base = clsName.substring(0, clsName.lastIndexOf("."));base = base.replaceAll("\\.", Matcher.quoteReplacement("/"));URL root = clazz.getResource("");JarOutputStream out = null;final File jar = File.createTempFile("storm-", ".jar", new File(System.getProperty("java.io.tmpdir")));System.out.println(jar.getAbsolutePath());Runtime.getRuntime().addShutdownHook(new Thread() {public void run() {//运行完成后删除jar包jar.delete();}});try {File path = new File(root.toURI());Manifest manifest = new Manifest();manifest.getMainAttributes().putValue("Manifest-Version", "1.0");manifest.getMainAttributes().putValue("Created-By", "JarPackageUtil");out = new JarOutputStream(new FileOutputStream(jar), manifest);writeBaseFile(out, path, base);} finally {out.flush();out.close();}return jar;}/** * 递归添加.class文件 */private static void writeBaseFile(JarOutputStream out, File file, String base) throws IOException {if (file.isDirectory()) {File[] fl = file.listFiles();if (base.length() > 0) {base = base + "/";}for (int i = 0; i < fl.length; i++) {writeBaseFile(out, fl[i], base + fl[i].getName());}} else {out.putNextEntry(new JarEntry(base));FileInputStream in = null;try {in = new FileInputStream(file);byte[] buffer = new byte[1024];int n = in.read(buffer);while (n != -1) {out.write(buffer, 0, n);n = in.read(buffer);}} finally {in.close();}}}}
0 0
- Java动态打Jar包工具类
- java系统自动打升级包工具
- java打压缩包工具方法分享
- eclipse中工程打jar包工具及其用法
- eclipse中工程打jar包工具及其用法
- JDBC连接jar包工具
- eclipse中工程打jar包工具及其用法(解决抚州分公司客户端代码打包)
- 打tar包工具TarUtil(1)
- 打tar包工具TarUtil(2)
- 打tar包工具TarUtil(3)
- 打tar包工具TarUtil(4)
- 打tar包工具TarUtil(5)
- 打tar包工具TarUtil(6)
- 打tar包工具TarUtil(7)
- 打tar包工具TarUtil(8)
- 打tar包工具TarUtil(9)
- 打tar包工具TarUtil(10)
- 打tar包工具TarUtil(11)
- Modsecurity设置识别异常资源使用
- Set集合方法之一 续 再谈HashSet
- 关于matlab几种标准化的代码
- C语言-快速排序
- Python正则表达式
- Java动态打Jar包工具类
- android studio制作.9图片,并且不改变原图大小
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- linux内核file_operations的赋值流程跟踪
- navicat for postgresql使用须知
- java-数据结构
- java——反射
- gensim 基本使用
- margin使用两大bug