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

Springboot、Tomcat启动加载外部指定文件夹下的jar文件

背景

 把项目中的公共jar包提取出来,放到自定义lib库文件夹中,方便统一分布式项目中依赖的jar版本,springboot是jar方式启动,Tomcat是直接start启动,加载外部jar的方式不同,下面分别介绍两种配置

配置

springboot

maven配置

主要是配置一个plugin,mainClass是启动类的全名,layout需要指定为zip

layout可以指定的类型有jar、war、和zip

这三种在maven打包之后生成的jar文件中的结构不同,下图是zip方式打包出来的格式

 

 可以看出launcher使用的是org.springframework.boot.loader.PropertiesLauncher

jar方式对应的是JarLauncher

war方式对应的是WarLauncher 

通过zip方式在启动时可以指定外部文件夹地址

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.xxx.Application</mainClass>
        <layout>ZIP</layout>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

启动

通过指定loader.path加载外部资源库

java -Dloader.path=/home/java/mylib -jar xx.jar

Tomcat配置

catalina.properties

修改conf文件夹下的catalina.properties文件

修改common.loader的值,在最后添加上外部资源库的地址

common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","/home/java/mylib/*.jar"

 启动正常启动即可

相关文章:

  • MySQL教程 - 索引(Index)
  • 神经网络做预测的原理,神经网络预测空气质量
  • java代码审计的点
  • alsa-lib和alsa-utils移植
  • SAP 电商云 Spartacus 服务器端渲染的单步调试详细步骤
  • 尚硅谷Vue系列教程学习笔记(12)
  • Flutter 高级教程之如何开发iOS Widget小组件展示SQLite本地数据库数据(教程含完整源码)
  • 5大指标:评估RPA项目的ROI,实现投资回报最大化
  • 神经网络模型的基本原理,神经网络模型是干嘛的
  • 猿创征文|【vue3学习】vue3中实现深拷贝
  • TiUP 镜像参考指南
  • 鹏城AI靶场助力大规模高质量中文语料数据集安全开放
  • 安装node, 配置npm全局安装位置,安装Vue.
  • 神经网络理论及应用答案,神经网络理论名词解释
  • 国产香氛品牌别样的生意经
  • 07.Android之多媒体问题
  • Android Studio:GIT提交项目到远程仓库
  • CentOS6 编译安装 redis-3.2.3
  • ES10 特性的完整指南
  • Fabric架构演变之路
  • mysql常用命令汇总
  • mysql中InnoDB引擎中页的概念
  • SegmentFault 2015 Top Rank
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue小说阅读器(仿追书神器)
  • Yeoman_Bower_Grunt
  • 代理模式
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用 Docker 部署 Spring Boot项目
  • 你对linux中grep命令知道多少?
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • # include “ “ 和 # include < >两者的区别
  • # Panda3d 碰撞检测系统介绍
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #include
  • (C++)八皇后问题
  • (C++20) consteval立即函数
  • (done) 两个矩阵 “相似” 是什么意思?
  • (ibm)Java 语言的 XPath API
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (一)80c52学习之旅-起始篇
  • (转)setTimeout 和 setInterval 的区别
  • (转)程序员疫苗:代码注入
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • *2 echo、printf、mkdir命令的应用
  • .htaccess配置重写url引擎
  • .Net 4.0并行库实用性演练
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET4.0并行计算技术基础(1)
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .net分布式压力测试工具(Beetle.DT)
  • .net专家(张羿专栏)