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

遇到的问题:项目中引用了外部的达梦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 驱动找到了 。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是由于缺少JDBC驱动程序引起的。在Java应用程序中,JDBC驱动程序是用于连接数据库的必要组件。在这种情况下,错误信息指出缺少dm.jdbc.driver.DmDriver类,这意味着需要下载并安装相应的JDBC驱动程序。 解决此问题的步骤如下: 1. 确认你的JDBC驱动程序是否正确安装。你可以在Maven仓库或官方网站上下载相应的JDBC驱动程序。 2. 确认你的JDBC驱动程序是否与你的MySQL版本兼容。如果不兼容,你需要下载相应版本的JDBC驱动程序。 3. 确认你的JDBC驱动程序是否正确配置。你需要将JDBC驱动程序添加到你的Java应用程序的类路径中。 以下是一个示例代码,演示如何使用JDBC连接MySQL数据库: ```java import java.sql.*; public class MySQLExample { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/EMP"; static final String USER = "username"; static final String PASS = "password"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(DB_URL,USER,PASS); stmt = conn.createStatement(); String sql; sql = "SELECT id, name, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int id = rs.getInt("id"); int age = rs.getInt("age"); String name = rs.getString("name"); System.out.print("ID: " + id); System.out.print(", Age: " + age); System.out.print(", Name: " + name); System.out.println(); } rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ se.printStackTrace(); }catch(Exception e){ e.printStackTrace(); }finally{ try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ } try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值