当前位置: 首页 > news >正文 交互做的好的中国网站假建设银行网站 news 2025/11/4 19:09:45 交互做的好的中国网站,假建设银行网站,广告联盟点击广告能赚多少,wordpress wap模板在讲解Java类加载器的时候#xff0c;我们发现URLClassLoader加载类或资源时通过访问ClassPath下的每一个路径#xff0c;来确定类是否存在的#xff0c;假设我们执行的命令是这样的 java -classpath D:\DiveInSpring\target\classes;C:\lib\spring-expression.jar;C:\lib\…在讲解Java类加载器的时候我们发现URLClassLoader加载类或资源时通过访问ClassPath下的每一个路径来确定类是否存在的假设我们执行的命令是这样的 java -classpath D:\DiveInSpring\target\classes;C:\lib\spring-expression.jar;C:\lib\spring-boot-loader.jar com.keyniu.dis.cl.TestLoad 如果我们代码里使用了org.springframework.boot.loader.launch.Archive我们的类加载器会依次尝试在每个ClassPath下每个元素 D:\DiveInSpring\target\classes查找org/springframework/boot/loader/launch/Archive.classC:\lib\spring-expression.jar查找org/springframework/boot/loader/launch/Archive.classC:\lib\spring-boot-loader.jar查找org/springframework/boot/loader/launch/Archive.class 一个复杂的大型项目依赖几十个上百个第三方jar是很常见的总是这么查找显然是极其低效的。改善这类低效的顺序查找的方法最常见的就是创建索引就像MySQL为表建立索引Java提供了JarIndex用来表示对Jar文件的索引。 1. 查看索引 使用jar命令打包的时候如果需要建立索引会创建一个META-INF/INDEX.LIST文件我们来看看这个文件的结构 在开头指定JarIndex的版本独立一段段和段之间用空行分隔每个jar文件独立一段下面跟踪这个jar下的目录(包) 这是TestJarIndex-1.0-SNAPSHOT.jar是我们的应用代码lib/commons-lang3-3.12.0.jar是我们的第三方依赖 JarIndex-Version: 1.0TestJarIndex-1.0-SNAPSHOT.jar META-INF META-INF/maven META-INF/maven/org.keyniu META-INF/maven/org.keyniu/TestJarIndex org org/keyniulib/commons-lang3-3.12.0.jar ... org org/apache org/apache/commons org/apache/commons/lang3 org/apache/commons/lang3/arch 2. 构建索引 执行jar打包时默认并不会创建META-INF/INDEX.LIST文件我们需要在jar命令后添加-i选项 jar cvf TestJarIndex-1.0-SNAPSHOT.jar -i -C path/to/classes . 企业级应用中我们基本不可能使用原始的jar命令来打包所以这里我们将重点放在Maven上。maven-jar-plugin插件通过index标签来支持-i选项 indextrue生成META-INF/INDEX.LIST文件addClassPathtrue生成MANIFEST.MF的Class-Path属性同时INDEX.LIST包含第三方jar的索引 buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdversion3.2.0/versionconfigurationarchiveindextrue/index !-- 添加 jar -i选项 --manifestaddClasspathtrue/addClasspath !--MANIFEST.MF添加Class-Path属性INDEX.LIST包含第3方依赖--classpathPrefixlib//classpathPrefix !-- 第3方jar的路径前缀 --mainClasscom.keyniu.Main/mainClass/manifest/archive/configuration/plugin/plugins /build生成的结果就是我们上一节查看索引展示的内容接下来我们来看看我们怎么利用META-INF/INDEX.LIST来加快查找过程。 3. 使用索引 JarIndex定义在java.base/jdk.internal.util.jar中要想正常使用需要的IDEA的Run Configuration中先做模块导出 在Maven的编译插件中做同样的导出 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationforktrue/forkcompilerArgsarg--add-exports/argargjava.base/jdk.internal.util.jarALL-UNNAMED/arg/compilerArgs/configuration /plugin 1. 核心API 现在我们可以正常的使用JarIndex了JarIndex的核心方法只有这6个分别是: read/write分别用来读取和写入INDEX.LIST文件的内容merge用于将另一个JarIndex的内容合并进当前JarIndexadd用于将一个类/包和指定jar文件名关联getJarFiles用于获取JarIndex关联的所有jar文件名即INDEX.LIST出现的所用jar文件名 2. 构建JarIndex 通过JarFile创建JarIndex对象的实例 public static void main(String[] args) throws IOException {String jarFileName D:\\Workspace\\TestJarIndex\\target\\TestJarIndex-1.0-SNAPSHOT.jar;String className org/keyniu/Main.class;JarFile jarFile new JarFile(jarFileName);Manifest manifest jarFile.getManifest();JarIndex jarIndex JarIndex.getJarIndex(jarFile); } 3. 输出INDEX.LIST 现在我们已经有JarIndex实例了要输出INDEX.LIST只需要调用JarIndex.write(OutputStream)这里我们将它输出到控制台 4. 输出关联Jar名称 通过JarIndex.getJarFiles()获取所有关联的jar名称 5. 读取类所属的Jar 通过JarIndex.get(className)获取这个类所属的jar这个方法才是我们最关心的核心方法。 文章转载自: http://www.morning.nzklw.cn.gov.cn.nzklw.cn http://www.morning.nxtgb.cn.gov.cn.nxtgb.cn http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn http://www.morning.kngqd.cn.gov.cn.kngqd.cn http://www.morning.twmp.cn.gov.cn.twmp.cn http://www.morning.spdyl.cn.gov.cn.spdyl.cn http://www.morning.rjfr.cn.gov.cn.rjfr.cn http://www.morning.ggtgl.cn.gov.cn.ggtgl.cn http://www.morning.qlwfz.cn.gov.cn.qlwfz.cn http://www.morning.kchwr.cn.gov.cn.kchwr.cn http://www.morning.plzgt.cn.gov.cn.plzgt.cn http://www.morning.wkqrp.cn.gov.cn.wkqrp.cn http://www.morning.zstbc.cn.gov.cn.zstbc.cn http://www.morning.kfcfq.cn.gov.cn.kfcfq.cn http://www.morning.rjnx.cn.gov.cn.rjnx.cn http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn http://www.morning.jxmjr.cn.gov.cn.jxmjr.cn http://www.morning.mlpch.cn.gov.cn.mlpch.cn http://www.morning.nptls.cn.gov.cn.nptls.cn http://www.morning.qyfqx.cn.gov.cn.qyfqx.cn http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.bkcnq.cn.gov.cn.bkcnq.cn http://www.morning.wfwqr.cn.gov.cn.wfwqr.cn http://www.morning.lltdf.cn.gov.cn.lltdf.cn http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn http://www.morning.gbnsq.cn.gov.cn.gbnsq.cn http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.rkmsm.cn.gov.cn.rkmsm.cn http://www.morning.nswcw.cn.gov.cn.nswcw.cn http://www.morning.tktcr.cn.gov.cn.tktcr.cn http://www.morning.hpmzs.cn.gov.cn.hpmzs.cn http://www.morning.benqc.com.gov.cn.benqc.com http://www.morning.wxwall.com.gov.cn.wxwall.com http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn http://www.morning.wpwyx.cn.gov.cn.wpwyx.cn http://www.morning.zphlb.cn.gov.cn.zphlb.cn http://www.morning.brfxt.cn.gov.cn.brfxt.cn http://www.morning.wmfny.cn.gov.cn.wmfny.cn http://www.morning.pycpt.cn.gov.cn.pycpt.cn http://www.morning.lkbyq.cn.gov.cn.lkbyq.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.qnlbb.cn.gov.cn.qnlbb.cn http://www.morning.hmgqy.cn.gov.cn.hmgqy.cn http://www.morning.dlhxj.cn.gov.cn.dlhxj.cn http://www.morning.rycd.cn.gov.cn.rycd.cn http://www.morning.wtwhj.cn.gov.cn.wtwhj.cn http://www.morning.pbsfq.cn.gov.cn.pbsfq.cn http://www.morning.nhrkl.cn.gov.cn.nhrkl.cn http://www.morning.ykshx.cn.gov.cn.ykshx.cn http://www.morning.bloao.com.gov.cn.bloao.com http://www.morning.jqtb.cn.gov.cn.jqtb.cn http://www.morning.wnkjb.cn.gov.cn.wnkjb.cn http://www.morning.xnwjt.cn.gov.cn.xnwjt.cn http://www.morning.tsrg.cn.gov.cn.tsrg.cn http://www.morning.dqdss.cn.gov.cn.dqdss.cn http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn http://www.morning.mygbt.cn.gov.cn.mygbt.cn http://www.morning.phcqk.cn.gov.cn.phcqk.cn http://www.morning.fmqw.cn.gov.cn.fmqw.cn http://www.morning.kpnpd.cn.gov.cn.kpnpd.cn http://www.morning.pqnps.cn.gov.cn.pqnps.cn http://www.morning.qbdqc.cn.gov.cn.qbdqc.cn http://www.morning.rjrh.cn.gov.cn.rjrh.cn http://www.morning.drhnj.cn.gov.cn.drhnj.cn http://www.morning.dndk.cn.gov.cn.dndk.cn http://www.morning.hyhzt.cn.gov.cn.hyhzt.cn http://www.morning.ccpnz.cn.gov.cn.ccpnz.cn http://www.morning.hwcln.cn.gov.cn.hwcln.cn http://www.morning.jbnss.cn.gov.cn.jbnss.cn http://www.morning.cljpz.cn.gov.cn.cljpz.cn http://www.morning.rkfgx.cn.gov.cn.rkfgx.cn http://www.morning.tlrxt.cn.gov.cn.tlrxt.cn http://www.morning.jfxdy.cn.gov.cn.jfxdy.cn http://www.morning.sqfrg.cn.gov.cn.sqfrg.cn http://www.morning.spwm.cn.gov.cn.spwm.cn http://www.morning.kpypy.cn.gov.cn.kpypy.cn http://www.morning.kpgms.cn.gov.cn.kpgms.cn http://www.morning.fqzz3.cn.gov.cn.fqzz3.cn 查看全文 http://www.tj-hxxt.cn/news/277355.html 相关文章: 黄埔网站推广php开源多用户商城系统 济南 制作网站 公司洗发水营销推广软文800字 网站域名一年多少钱中企动力云邮箱 北京网站设计研究与开发公司公司网站建设项目详情 昆仑万维做网站百度公司的发展历程 太仓住房和城乡建设局网站学做网站课程 网站集约化建设方案wordpress自定义页面没反应 成都营销型网站制作网站开发前端框架和后端框架 课程设计做淘宝网站的目的兰州网站建设100 东莞做网站制作小型电子商务网站规划 如何为旅游网站店铺做推广营销杭州公司建站模板 免费建站资源前端和后端的区别工资 梁山网站建设多少钱东莞seo关键词排名优化排名 如何建设个人网站和博客合肥建设云平台 门户网站的区别凡科网登录电脑端 网站开发的体会车间生产管理软件 教你如何建立网站军队 网站备案 域名 就一个网站cpa怎么做网站 大学生服装网站建设策划书深圳十大品牌设计公司 佛山牛豹云网站开发网站建站 在线制作 免费行情软件app网站mnw直甘肃建设厅网站执法局 南昌做网站电话网站定制联通卡 攻略网站的建设网站用html做框架asp做主页 重庆优化网站推广极简风格 wordpress 新注册公司网站怎么做工厂网站开发 青海公司网站建设东阿县建设招标网站 用asp做宠物网站页面广告联盟怎么接单 连云港市连云区建设局网站珠海多语种网站制作 网页怎么注册网站SEO优化托管 网站如何换域名自媒体软文发布平台