java - 为什么 Jenkins 管道抛出 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver?
问题描述
Jenkins 管道抛出的异常。
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
我已经安装了Database Plugin和MySQL 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
解决方案
原因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
推荐阅读
- javascript - “文件已损坏,无法打开。” 文档 JSP
- database - 数据库设计中的常见做法?
- dns - Gitlab 页面:验证域所有权
- powershell - 将变量导出到 Excel 连续
- android - 在使用 Angular 5 构建的网络应用上模拟 iOS 和 Android 上的广告预览
- sharepoint - 使用 REST api 创建 Sharepoint 匿名链接
- java - Spring Boot 404 网络服务
- java - javax.mail over Office365 读取和ComparisonTerm 问题
- c# - 在无参数构造函数中解析服务会导致 Repository 中出现 InvalidOperationException
- android - 我可以在 ViewModel 中使用 view.getContext() 作为我的数据绑定类吗