springboot java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver 应该如何解决

发布于:2024-07-03 ⋅ 阅读:(12) ⋅ 点赞:(0)

遇到的问题:项目中引用了外部的达梦jar包 在idea中正常使用 也能找到dm.jdbc.driver.DmDriver 驱动 但是当通过jenkins 构建部署到服务器上 总是报 ClassNotFoundException: dm.jdbc.driver.DmDriver 找不到驱动

应用到的驱动代码如下格式
在这里插入图片描述
排查步骤
1.首先看你的项目中 达梦的依赖包是否 放在 项目中的 resources 目录下的 新建的 lib 目录下面 如下图在这里插入图片描述
2.查看你项目中的pom文件 达梦依赖的路径是否正确

<dependency>
<groupId>com.dm</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver18.jar</systemPath>
</dependency>

<scope><systemPath>是必须要有的 指定你 DmJdbcDriver18.jar 包所在项目中的位置

3.查看你pom文件中 maven 打包方式 是否会把 SystemScope 配置的外部包打进你的jar包中

查看如下你的项目中是否也是这样配置 maven 进行打包的
在这里插入图片描述
问题就出在这里 这样的maven 打包配置 不会把 SystemScope 配置的外部包打进你的jar包中 所以 程序就找不到 /src/main/resources/lib/DmJdbcDriver18.jar

经过调整 增加以下配置 再次 进行 jenkins 打包 问题解决了
在这里插入图片描述
需要增加 下面这个配置

<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>

<includeSystemScope>true</includeSystemScope> 的作用是

告诉 Maven 在打包过程中包含系统范围的依赖项。这意味着,当使用 spring-boot-maven-plugin 插件进行重新打包时,Maven 会将系统范围内的依赖项(通常是那些不在 Maven 仓库中的本地库)一起打包到最终的可执行 JAR 文件中。

至此!经过测试 dm.jdbc.driver.DmDriver 驱动找到了 。