springboot第三方jar包外部引用

本文讲述了如何在Spring Boot项目中处理第三方jar包的外部引用问题,特别是在遇到如Shiro集成时遇到的问题。通过一篇博客文章,找到了解决Java NoSuchAlgorithmException的正确方法,涉及的关键pom.xml配置使得在运行时可以通过命令行参数指定jar包外部的lib目录。此外,还介绍了Spring Boot如何加载外部配置文件,强调了加载配置文件的优先级,并提供了将application.yml配置文件外置的方法。
摘要由CSDN通过智能技术生成

一开始的时候,使用maven打包springboot,我都是将打好的包lib里面的jar全部删除。然后单独复制一份lib文件,然后运行的时候使用

java  -Djava.ext.dirs=D:\lib test

这样很简单,又很方便。但是后面项目集成shiro之后,就不行了。简单的把lib里面删除,运行的时候就会报错
java.security.NoSuchAlgorithmException: AES KeyGenerator not available
百度了很多都是什么jdk的问题,其实我知道,这不是我要的答案,无意间发现一篇文章
https://blog.csdn.net/xrq0508/article/details/80050119
打开了新大门。我的pom.xml关键配置如下

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <!-- 指定 Spring Boot 启动类,实际测试中必须 -->
                            <mainClass>com.hch.fifa.FifaApplicat
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想要让Spring Boot优先加载你自己的类,以替换依赖中相同路径下的类,可以使用以下方法: 1. 在你的项目中,创建一个新的包,用于存放你的自定义类。可以使用和依赖中相同的包路径,这样就可以替换掉依赖中的类。 2. 通过使用`@ComponentScan`注解,告诉Spring Boot扫描你的自定义类所在的包。例如: ```java @SpringBootApplication @ComponentScan(basePackages = {"com.example.custom"}) public class MyApplication { // ... } ``` 这,`com.example.custom`是你自定义类所在的包路径。 3. 在`pom.xml`中,将你的自定义类编译成一个jar包,并将其添加到依赖中,同时将依赖的范围(scope)设置为`provided`,这样就可以避免依赖冲突。例如: ```xml <dependency> <groupId>com.example</groupId> <artifactId>my-custom-classes</artifactId> <version>1.0.0</version> <scope>provided</scope> </dependency> ``` 这,`com.example.my-custom-classes`是你自定义类所在的项目,`provided`表示这个依赖是在编译和测试时需要的,但在运行时由外部提供。 4. 在应用程序的启动代码中,使用`ClassLoader`来加载你的自定义类。例如: ```java ClassLoader classLoader = new URLClassLoader(new URL[]{new URL("file:/path/to/your/custom/classes.jar")}, Thread.currentThread().getContextClassLoader()); Thread.currentThread().setContextClassLoader(classLoader); ``` 这,`URLClassLoader`用于加载你的jar包,`Thread.currentThread().getContextClassLoader()`用于获取当前线程的类加载器。 5. 重新启动应用程序,你的自定义类就会被优先加载,从而替换依赖中相同路径下的类。 需要注意的是,使用这种方法可能会带来一些潜在的问题,例如版本兼容性和类加载的问题,需要谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值