当前位置: 首页 > news >正文

网站备份怎么做莱芜人论坛

网站备份怎么做,莱芜人论坛,阿里的6家外包公司名单,在tomcat部署wordpress一、简述 Maven项目通过package打成jar包后,jar包中包含所有依赖lib文件。本文介绍了两种方式解析嵌套jar中的class文件,一种是通过spring-boot-loader包JarFileArchive,另一种是util包中JarFile。 二、JarFileArchive方式 1.spring-boot-…

一、简述

Maven项目通过package打成jar包后,jar包中包含所有依赖lib文件。本文介绍了两种方式解析嵌套jar中的class文件,一种是通过spring-boot-loader包JarFileArchive,另一种是util包中JarFile。

二、JarFileArchive方式

1.spring-boot-loader依赖引入

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-loader</artifactId><version>2.2.4.RELEASE</version>
</dependency>

 2.demo案例

   public static void main(String args[]) throws Exception {String jarPath = "C:\\Users\\root\\Desktop\\make-test.jar";// 方案一:spring-boot-loaderlong start1 = System.currentTimeMillis();getClassInfoByJarLib(jarPath);long end1 = System.currentTimeMillis();log.info("收集所有lib类ClassInfo,花费时间={}",(end1-start1));} public static void getClassInfoByJarLib(String jarPath) {String filePath = "file:/"+ URLDecoder.decode(jarPath, StandardCharsets.UTF_8).replaceAll("\\\\","/")+"!/";String rootJarPath = "jar:"+ filePath;try {JarFileArchive jarFileArchive = new JarFileArchive(new Handler().getRootJarFileFromUrl(new URL(rootJarPath)));//getNestedArchives获取嵌套的jar等文件,参数是个EntryFilter,过滤条件jarFileArchive.getNestedArchives(entry -> entry.getName().startsWith("BOOT-INF/lib/") && entry.getName().endsWith(".jar")).forEach(archive -> {archive.iterator().forEachRemaining(entry -> {String entryName = entry.getName();// 过滤嵌套jar包中字节码文件if (entryName.endsWith(".class")) {String className = entryName.replace('/', '.').replace(".class", "");log.info("className:{}",className);}});});} catch (IOException e) {log.error("解析嵌套jarLib中ClassInfo异常,jarPath={}",jarPath,e);throw new RuntimeException(e);}}

三、JarFile方式

1.demo案例 

   public static void main(String args[]) throws Exception {String jarPath = "C:\\Users\\root\\Desktop\\make-test.jar";// 方案二:JarFilelong start2 = System.currentTimeMillis();processJar(jarPath);long end2 = System.currentTimeMillis();log.info("收集所有lib类ClassInfo,花费时间={}",(end2-start2));} private static void processJar(String jarPath){try (JarFile jarFile = new JarFile(new File(jarPath))) {jarFile.stream().parallel()// 过滤出所有符合要求的jar包.filter(entry -> !entry.isDirectory() && entry.getName().startsWith("BOOT-INF/lib/") && entry.getName().endsWith(".jar")).forEach(entry -> processNestedJar(jarFile, entry.getName()));} catch (IOException e) {log.error("解析嵌套jarLib中ClassInfo异常,jarPath={}",jarPath,e);throw new RuntimeException(e);}}private static void processNestedJar(JarFile jarFile, String entryName){// 处理嵌套jar文件try (InputStream nestedJarStream = jarFile.getInputStream(jarFile.getJarEntry(entryName));JarInputStream jarInputStream = new JarInputStream(nestedJarStream)) {JarEntry nestedEntry;while ((nestedEntry = jarInputStream.getNextJarEntry()) != null) {if (nestedEntry.isDirectory()) {continue;}String nestedEntryName = nestedEntry.getName();if (!nestedEntryName.endsWith(".class")) {continue;}try {String className = nestedEntryName.replace('/', '.').replace(".class", "");log.info("className:{}",className);} catch (Exception e) {log.error("目标类={}查找失败",nestedEntryName,e);throw new RuntimeException(e);}}} catch (IOException e) {log.error("目标类={}查找失败",entryName,e);throw new RuntimeException(e);}}

四、两种方式对比

实测项目make-test.jar中所有依赖lib约200个,其中所有class字节码文件约7万多个。方案JarFileArchive约1.5s全部解析,方案JarFile约6s全部解析。

http://www.yayakq.cn/news/778033/

相关文章:

  • 河北新亚建设集团网站直播网站怎么做啊
  • 自贡网站制作国外设计参考网站
  • 前端开发做网站吗谢闵行
  • 做淘宝客需要企业网站吗wordpress2018版本
  • 专门做饮食加盟的网站创免费网站
  • 手机网站 wap国家设计师资格证书
  • 企业网站搜索引擎推广方法包括评网网站建设
  • 伍菲网站建设wordpress文章备份
  • 旅游网站开发实训报告动漫毕业设计作品网站
  • 杭州职工业能力建设网站从零开始制作 wordpress 主题
  • 协会秘书处工作建设 网站聊城建设银行官方网站
  • 特效网站模板经典广告案例
  • php网站模板源码网站开发用什么电脑
  • 网站建设项目经理招聘湛江网站网站建设
  • 蚌埠市重点工程建设管理局网站django个人博客网站开发部署源码
  • 企业免费网站建设济南企业网站建设哪家好
  • 做教育培训网站的公司湛江网站建设费用
  • 郑州有哪些做网站的公司河北三河建设厅网站6
  • 北京高端企业网站织梦网站环境
  • 网站版面布局设计的原则电子商务网站建设与管理的论文题目
  • 昆明做网站首选互维vr技术在网站建设的应用
  • 仿牌外贸网站推广公众号开发者密钥重置影响
  • 静态网站开发试验报告我想弄个自己的卖货网站怎样做
  • 支付网站怎么设计的宁波高端网站设计公司
  • 网站策划岗位职责网站建设比较好
  • php 网站cookiephp网站怎么样
  • 网站优化最为重要的内容是南京网站建设招聘
  • 郑州做定制网站的公司网站后台更新后主页不显示
  • 网站做哪些主题比较容易做.net网站做增删改
  • 下载网站php源码wordpress表单拖拽