这篇文章给大家介绍如何解压jar,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
页面上传jar包
后台解压jar包
页面展示所有package
选择一个package
页面显示class和子package
选择class,进入class解析页面
选择package,显示class和子package
package com.wuxiongwei.java.jar2; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; import java.nio.channels.Channels; import java.nio.channels.FileChannel; import java.nio.channels.ReadableByteChannel; import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; /** * 非常好的工具类 <br> * 解压jar. * @author * @version 1.0.0 */ public class JarDecompression { protected static Log log = LogFactory.getLog(JarDecompression.class); @SuppressWarnings("resource") public static void uncompress(File jarFile, File tarDir) throws IOException { JarFile jfInst = new JarFile(jarFile); Enumeration enumEntry = jfInst.entries(); while (enumEntry.hasMoreElements()) { JarEntry jarEntry = (JarEntry) enumEntry.nextElement(); File tarFile = new File(tarDir, jarEntry.getName()); if(jarEntry.getName().contains("META-INF")){ File miFile = new File(tarDir, "META-INF"); if(!miFile.exists()){ miFile.mkdirs(); } } makeFile(jarEntry, tarFile); if (jarEntry.isDirectory()) { continue; } FileChannel fileChannel = new FileOutputStream(tarFile).getChannel(); InputStream ins = jfInst.getInputStream(jarEntry); transferStream(ins, fileChannel); } } /** * 流交换操作 * @param ins 输入流 * @param channel 输出流 */ private static void transferStream(InputStream ins, FileChannel channel) { ByteBuffer byteBuffer = ByteBuffer.allocate(1024 * 10); ReadableByteChannel rbcInst = Channels.newChannel(ins); try { while (-1 != (rbcInst.read(byteBuffer))) { byteBuffer.flip(); channel.write(byteBuffer); byteBuffer.clear(); } } catch (IOException ioe) { ioe.printStackTrace(); } finally { if (null != rbcInst) { try { rbcInst.close(); } catch (IOException e) { e.printStackTrace(); } } if (null != channel) { try { channel.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 打印jar文件内容信息 * @param file jar文件 */ public static void printJarEntry(File file) { JarFile jfInst = null;; try { jfInst = new JarFile(file); } catch (IOException e) { e.printStackTrace(); } Enumeration enumEntry = jfInst.entries(); while (enumEntry.hasMoreElements()) { log.info((enumEntry.nextElement())); } } /** * 创建文件 * @param jarEntry jar实体 * @param fileInst 文件实体 * @throws IOException 抛出异常 */ public static void makeFile(JarEntry jarEntry, File fileInst) { if (!fileInst.exists()) { if (jarEntry.isDirectory()) { fileInst.mkdirs(); } else { try { fileInst.createNewFile(); } catch (IOException e) { log.error("创建文件失败>>>".concat(fileInst.getPath())); } } } } public static void main(String[] args) { File jarFile = new File("/Users/mac/Documents/other/bw2/bopsdk-openapi-1.0.2-Release.jar"); File targetDir = new File("/Users/mac/Documents/other/bw2/test/"); try { JarDecompression.uncompress(jarFile, targetDir); } catch (IOException e) { e.printStackTrace(); } } }
关于如何解压jar就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。