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

南通制作公司网站wap啥梗

南通制作公司网站,wap啥梗,深圳外贸业务员工资,医疗网站专题怎样做一、简述 Maven项目通过package打成jar包后#xff0c;jar包中包含所有依赖lib文件。本文介绍了两种方式解析嵌套jar中的class文件#xff0c;一种是通过spring-boot-loader包JarFileArchive#xff0c;另一种是util包中JarFile。 二、JarFileArchive方式 1.spring-boot-…一、简述 Maven项目通过package打成jar包后jar包中包含所有依赖lib文件。本文介绍了两种方式解析嵌套jar中的class文件一种是通过spring-boot-loader包JarFileArchive另一种是util包中JarFile。 二、JarFileArchive方式 1.spring-boot-loader依赖引入 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-loader/artifactIdversion2.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.hkea.cn/news/14335576/

相关文章:

  • 高端网站设计百家号网站 费用
  • 做网站卖什么新网站怎么做
  • 营口汽车网站建设做蓝牙音箱在什么网站上找客户
  • 大型网站开发用什么语言站酷网图片
  • 漳州seo建站网站开发如何收费
  • 资讯文章网站模板服务器 打开网站iis7
  • 做淘宝客要自己的网站福泉网站制作
  • 邢台移动网站建设公司wordpress文件上传
  • 济南酷火网站建设如何制作一般企业网站
  • 大淘客网站建设app建设网站类策划书
  • 青岛企业做网站有模板怎么做网站
  • 企业网站建设的现状教育网站报名
  • 基于wordpress门户网站建设工程是指哪些内容
  • 东莞免费自助建站模板天津网站的建设
  • 天津建设科技杂志的官方网站h5页面开发工具
  • 广州学网站建设网站rar文件
  • 一起做网商网站怎么样ftp是属于一种网站发布方式
  • 东莞如何建设网站制作平台如何给网站添加cnzz
  • 什么是网站制作app常州模板网站建设价格
  • 大型网站开发教程godaddy wordpress 2014
  • 怎么做发卡网站还原wordpress
  • 无锡微信网站建设价格怎么制作网页推广
  • 泉州晋江网站建设费用百度官网地址
  • 移动网站开发教学大纲软件开发公司推荐
  • 网站推广方法的费用给别人做网站能赚钱吗
  • 如何申请免费的网站空间建立公司网站的好处
  • 银河盛世网站建设wordpress 清理媒体库
  • 做网站公司的收费多少网络营销渠道也可分为
  • 做影视网站须要注意什么成都企业网站优化
  • 网站建设开发环境网站建设中 单页