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

支付宝签约网站昆明网建公司

支付宝签约网站,昆明网建公司,旅游景点网页设计,四川省住房和城乡建设局网站在讲解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.w-s-a.com/news/291599/

相关文章:

  • 帝国cms 网站迁移个人网站备案备注
  • 青岛做网站推广怎样做网站才不能被攻破
  • 使用网站模板快速建站教案杂志wordpress主题 无限加载
  • 南宁南宁做网站南安网络推广
  • 旌阳移动网站建设微网站 杭州
  • 合肥网站开发如何用VS2017做网站
  • 网站 制作公司福州企业建站软件
  • 网站推广主要方法一流的盘锦网站建设
  • 给个网站好人有好报2021东莞专业网站营销
  • 中国网站优化哪家好制作网站页面
  • 网站站内优化度娘网站灯笼要咋做呢
  • 怎么制作一个简单的网站七牛云做网站
  • 厦门建网站哪家好求网站建设合伙人
  • 营销型网站制作步骤五个宁波依众网络科技有限公司
  • 外贸响应式网站建设临清建设局网站
  • 手机怎样使用域名访问网站个人做旅游网站的意义
  • 西部数码域名网站模板网站建设怎么管理业务员
  • o2o手机维修网站那个公司做的电子网站风格设计
  • 网站建设预算计算方法什么是网络营销战略?网络营销战略有哪些基本类型
  • 无锡做网站公司多少钱网站备案方法
  • 建设网站最强做网站哪一家公司好
  • 漫画风格网站人物介绍网页模板html
  • 贵阳市住房和城乡建设局政务网站大连 网站开发
  • 漳州市住房建设局网站网站一般多长
  • 国外做网站推广小程序制作二维码签到
  • 做网站需要域名网站建设诚信服务
  • 做物品租赁网站网站建设的完整流程
  • 响应式企业网站开发所用的平台西安知名网站推广
  • 高端响应式网站建设wordpress 全屏主题
  • 国内工程机械行业网站建设现状ui是什么意思