本文介绍: 按文件结构约定依赖jar包必须放在 WEB-INF/lib 下,任何运行时必须但部署到传统web容器时不必须的依赖放到 WEB-INF/lib–provided 目录下,而应用程序的 classes 必须放在 BOOT-INF/classes 目录下。springboot 加载 嵌套jars 核心入口 org.springframework.boot.loader.jar.JarFile。springboot 程序使用 Maven PLugin插件编译时,可以生成可执行的 jar 和 war 程序。
JAVA 可执行文件格式
springboot 程序使用 Maven PLugin插件编译时,可以生成可执行的 jar 和 war 程序。其核心原理是 spring–boot–loader 模块,详细原理如下
1 嵌套 JARS
java 本身不支持任何标准的加载嵌套 jar 的方式,要解决该问题,很多人使用 sharded jars 方式去打包程序,将所有 jar 包从新打包为一个独立的 “union–all.jar” 。但是 shared jars 方法使得很难判断应用程序中代码的归属、同时可能存在部分文件名冲突问题。
1.1 可执行 Jar 文件结构
MANIFEST.MF 文件内容
按文件结构约定依赖jar包必须放在 WEB-INF/lib 下,任何运行时必须但部署到传统web容器时不必须的依赖放到 WEB-INF/lib–provided 目录下,而应用程序的 classes 必须放在 BOOT-INF/classes 目录下。
1.2 索引文件
2. Spring Boot 加载 jar file 机制
3. 执行jar
4 PropertiesLauncher
案例
java 外部lib
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。