首页 > 解决方案 > 为什么 Jenkins 管道抛出 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver?

问题描述

Jenkins 管道抛出的异常。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

我已经安装了Database PluginMySQL Database Plugin

但我仍然得到这个例外。

管道代码:

import groovy.sql.Sql

node('master'){
    Class.forName("com.mysql.jdbc.Driver")
    def sql = Sql.newInstance("jdbc:mysql://10.10.115.38:3306/test", "root","123456", "com.mysql.jdbc.Driver")
    def rows = sql.execute "select count(*) from test;"
    echo rows.dump()
}

异常消息:

 Running on Jenkins in /var/jenkins_home/workspace/test-jdbc
 [Pipeline] {
 [Pipeline] }
 [Pipeline] // node
 [Pipeline] End of Pipeline
 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:352)

我正在使用Jenkins 版本 2.222.1

标签: javamysqljenkinsjdbc

解决方案


原因java.lang.ClassNotFoundException: com.mysql.jdbc.Driver是缺少 MySQL Connector/J jar。

注意:如果您使用的是更高版本的 MySQL Connector/J,那么建议使用com.mysql.cj.jdbc.Driver而不是com.mysql.jdbc.Driver

我更新了你的脚本。

import groovy.sql.Sql

node('master'){
    Class.forName("com.mysql.cj.jdbc.Driver")
    def sql = Sql.newInstance("jdbc:mysql://10.10.115.38:3306/test", "root","123456", "com.mysql.cj.jdbc.Driver")
    def rows = sql.execute "select count(*) from test;"
    echo rows.dump()
}

从这里下载 jar:https ://mvnrepository.com/artifact/mysql/mysql-connector-java


推荐阅读