引入最好使用 Maven 仓库中的依赖项,但是有时候就是需要引入自己本地jar包~
首先需要将.jar
文件放在位于src/main/resources/lib/
目录下
那么在Maven项目的pom.xml
文件中,你可以使用以下配置:
<dependencies>
<dependency>
<groupId>local</groupId>
<artifactId>xxx</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/lib/名称.jar</systemPath>
</dependency>
</dependencies>
同步或刷新项目:保存构建工具配置文件后,需要执行构建工具的命令来同步或刷新项目依赖项。
对于Maven项目,你可以运行 mvn clean install
或使用你的IDE的Maven工具来刷新项目。
Spring Boot项目通常可以使用Maven或Gradle来打包成可执行的JAR文件。
产生问题:本地可以运行,打包后运行报错~
这样子jar包算引入完成,在本地运行可以找到jar包,运行应该就是没问题了。但是打包后还是会出现找不到。
java.lang.NoClassDefFoundError错误通常表示在运行时找不到某个类的定义
添加配置:
如果打包用的是spring-boot-maven-plugin 那么针对 Maven 插件需要添加<includeSystemScope>true</includeSystemScope>
的配置
它用于告诉 Maven 在构建可执行 JAR 文件时是否包括系统范围(system scope)的依赖项。系统范围的依赖项通常是通过 <scope>system</scope>
配置引入的,而这类依赖项通常不会被包含在生成的 JAR 文件中。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
问题的根本原因是在你的项目中,jar
被定义为一个系统范围的依赖项,因此在默认情况下,它不会被包含在生成的 JAR 文件中。这就是为什么在构建可执行 JAR 文件并运行它时,无法找到.jar
的原因。
需要注意的是,这种做法仅适用于将 作为系统范围依赖项引入的情况。如果可能,最好使用 Maven 仓库中的依赖项,而不是将 JAR 文件放在项目的本地目录中,并将其配置为系统范围依赖项,因为这更符合 Maven 的约定。但在某些情况下,必须引入本地 JAR 文件,这时设置 <includeSystemScope>true</includeSystemScope>
是一个有效的解决方法。