springboot打包外部引入的jar包文件

SpringBoot项目打包配置解决ClassNotFoundException
当使用SpringBoot打包遇到运行时找不到外部jar包的问题,可以通过在resources创建lib目录,将依赖jar放入,并在pom.xml中配置systemPath依赖及spring-boot-maven-plugin的includeSystemScope为true来解决。确保在打包过程中包含外部库。

所遇问题:

        在对springboot项目打包时,未做特殊处理,jar包可以正常运行,但是调接口时会出现ClassNotFoundException,提示找不到外部引入的jar包。

解决方案:

1.首先在项目的resources文件夹下新建文件lib,然后将需要的jar包文件拷贝到lib文件夹里,例如abc.jar

2.pom.xml

	<!-- 本地jar包,路径resources/lib/abc.jar  -->
		<dependency>
            <groupId>com.springboot.project</groupId>
            <artifactId>test</artifactId>
            <version>1.0.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/abc.jar</systemPath>
        </dependency>

		然后在pom.xml文件的build标签里的plugins里添加打包标签
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<!-- 打包时添加这个标签includeSystemScope 
					<fork>true</fork-->
					<includeSystemScope>true</includeSystemScope>					
				</configuration>
			</plugin>

在Spring Boot项目中引入外部`.jar`文件和`.dll`库文件并进行打包,可参考以下方法: ### 引入外部`.jar`文件 可以将外部`.jar`文件放置在项目的`lib`目录下,然后在`pom.xml`文件中添加如下依赖配置: ```xml <dependency> <groupId>com.example</groupId> <artifactId>external-jar</artifactId> <version>1.0.0</version> <scope>system</scope> <systemPath>${project.basedir}/lib/external-jar.jar</systemPath> </dependency> ``` 上述代码中,`groupId`、`artifactId`和`version`可根据实际情况进行修改,`systemPath`指定了外部`.jar`文件的路径。 ### 引入外部`.dll`库文件 #### 方式一:不打包到`jar`中 由于`.dll`文件通常无法直接打入`jar`,且如果`.dll`文件过大、更新频率小,每次打包部署浪费时间,可选择不将其打包到`jar`中,而是在部署时手动将`.dll`文件放在`jar`的同级目录。例如之前的方案一,原本将`dll`文件放在`resources`下并打入`jar`,后因上述原因改为部署时手动放置在`jar`的同级目录 [^1]。 #### 方式二:使用绝对路径调用 将调用`.dll`文件的方法由相对路径改为绝对路径。例如,官方给的`HCNetSDK.java`中使用的是相对路径,要求库文件都放在项目根目录下,可将库文件放在电脑任意位置的文件夹中,修改代码如下: ```java // 官方给的HCNetSDK.java中使用的是相对路径,要求库文件都方法项目根目录下 // HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary( "HCNetSDK", HCNetSDK.class); // 改进:将库文件方法电脑任意位置的文件夹中(我放到桌面dll_library文件夹中) HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("C:\\Users\\esbk\\Desktop\\dll_library\\" + "HCNetSDK", HCNetSDK.class); ``` 这样将项目打包后放在任意位置通过`java -jar *.jar`运行即可调用到`.dll`文件 [^4]。 ### 打包 完成上述引入操作后,使用`Maven`或`Gradle`进行打包。以`Maven`为例,在项目根目录下执行`mvn clean package`命令,即可生成外部`.jar`文件依赖的`jar`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值