码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringBoot添加外部jar包及打包(亲测有效) - 第452篇


    历史文章(文章累计450+)

    《国内最全的Spring Boot系列之一》

    《国内最全的Spring Boot系列之二》

    《国内最全的Spring Boot系列之三》

    《国内最全的Spring Boot系列之四》

    《国内最全的Spring Boot系列之五》

    深入Feign源码吃透Spring扩展点「扩展点实战系列」- 第446篇

    利用Spring扩展点对敏感信息加密解密,一文集齐n多知识点「扩展点实战系列」」- 第447篇

    利用Spring扩展点模拟MyBatis的注解编程「知识点多多」「扩展点实战系列」- 第448篇

    走进MyBatis源码一探Spring扩展点「知识点多多」「扩展点实战系列」- 第449篇

    走进SpringBoot源码吃透Spring扩展点「扩展点实战系列」- 第450篇

    5个月的精华:Spring/SpringBoot扩展点手册:手册在手,编码无忧:全网独一份 - 第451篇

    悟纤:师傅,最近使用spring-boot-maven-plugin导出jar包之后,运行不起来,报ClassNotFoundException。

    师傅:那ClassNotFoundException指向的类是Spring Boot starter的类,还是项目中的类,还是?

    悟纤:这个类是项目中引入的外部jar包中的类。

    师傅:那这样子的话,很有可能就是在打包的时候,外部jar包没有一起被打包进来了,这要解决了这个问题,那么问题就迎刃而解了。

    师傅:有些时候,问题并不是很难,我们要学习的就是学习分析问题,然后解决问题,这也是拉开和别人的差距。

    悟纤:那师傅我自己去好好研究下~

    师傅:去吧,学会分析问题,解决问题,超越自己。

    导读

    最近在研究web3的时候,有些依赖包,并没有在maven仓库中,需要从git上下载源码,然后编译打包,最后在引入到项目中。

    引入使用之后,编译以及在开发工具运行都是很正常的,但打完包之后,一运行就报错了,通常报错是Caused by: java.lang.ClassNotFoundException,所以这一节就来解决一下两个问题:

    (1)如何添加外部jar包?

    (2)如何打包外部jar包?

    题外话:最近把Spring/Spring扩展点实战系列写完之后,就不知道要写哪方面的文章了,大家对什么感兴趣,可以留言~

    一、添加外部jar包

    准备一个外部jar包,比如api.jar:

    在项目路径下创建一个文件夹libs,将api.jar放到libs下。

    添加外部jar依赖:

    <dependency>    <groupId>com.kfit</groupId>    <artifactId>api</artifactId>    <version>1.0.0</version>    <scope>system</scope>    <systemPath>${project.basedir}/libs/api.jar</systemPath></dependency>

    添加完之后,代码中就可以使用到该jar里的类和方法。

    说明:

    (1)groupI、artifactId、version随便填写,并不一定要和api.jar的信息,但肯定是要一定的规范和关联性会比较好了。

    (2)scope=system表示此依赖是来自外部jar,而不是maven仓库。当scope设置为system时,systemPath属性才会生效,systemPath为一个物理文件路径,来指定依赖的jar其物理磁盘的位置。

    (3)${project.basedir}代表根目录。

    二、打包外部jar包

    上面哪一步仅仅是引用到了项目里,打包的时候是不会打包到jar/war中的。对于Spring Boot的项目,一般都会使用到打包插件,那么只需要添加一个配置即可,如下:

    <plugin>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-maven-plugin</artifactId>    <configuration>        <includeSystemScope>true</includeSystemScope>    </configuration></plugin>

    说明:重要的是includeSystemScope为true。

    如果有些配置文件,并非Spring Boot的默认路径,那么可能就需要借助resouce配置(resources节点和plugins节点同级):

    <resources>    <resource>                <directory>libs</directory>                <targetPath>/BOOT-INF/lib/</targetPath>                <includes>            <include>**/*.jar</include>        </includes>    </resource></resources>

    总结

    (1)如何添加外部jar包:指定score=system,并且配置sysemPath。

    (2)如何打包外部jar包:使用spring-boot-maven-plugin,并且配置属性includeSystemScope为true。

    最近把Spring/Spring扩展点实战系列写完之后,就不知道要写哪方面的文章了,大家对什么感兴趣,可以留言~

  • 相关阅读:
    CentOS6.6下安装git 2.6.2
    SpringMVC之自定义注解
    广义坐标的理解
    网络安全(补充)
    LASSO回归
    p5.js 3D图形-立方体
    零代码—0代码—无代码平台是什么?怎么选?
    YOLOv5和YOLOv7环境(GPU)搭建测试成功
    几个强力的nodejs库
    opencv实践项目-图像拼接
  • 原文地址:https://blog.csdn.net/linxingliang/article/details/128091841
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号