解决SUSE 15 Jenkins(Java 11)中MySQL Connector Jar类路径缺失问题
解决Jenkins Groovy脚本连接MySQL的ClassNotFoundException问题
在SUSE 15上的Jenkins 2.361.4(Java 11)环境里,zypper install mysql-connector-java安装的驱动不会自动加入Jenkins的类路径,所以Groovy脚本找不到驱动类。下面是几种靠谱的解决方法:
方法一:把驱动Jar放到Jenkins的lib目录(永久生效)
- 先确认Jenkins的主目录:要么看系统管理→系统信息里的
JENKINS_HOME,SUSE默认一般是/var/lib/jenkins。 - 找到zypper安装的MySQL驱动Jar位置,通常在
/usr/share/java/下,文件名可能是mysql-connector-java.jar或者带版本号的mysql-connector-java-8.x.x.jar。 - 复制驱动到Jenkins的lib目录:
sudo cp /usr/share/java/mysql-connector-java.jar /var/lib/jenkins/lib/ - 重启Jenkins服务:
sudo systemctl restart jenkins
方法二:在Groovy脚本里手动加载驱动(无需重启,临时/脚本内生效)
如果不想重启Jenkins,直接在脚本里指定驱动路径加载就行,还能兼容MySQL 8.0+的新驱动类:
// 替换成你的驱动Jar实际路径 def driverJarPath = "/usr/share/java/mysql-connector-java.jar" def dbUrl = "jdbc:mysql://你的数据库地址:3306/数据库名?useSSL=false&serverTimezone=UTC" def dbUser = "数据库账号" def dbPwd = "数据库密码" // 加载驱动类 def classLoader = new URLClassLoader([new File(driverJarPath).toURI().toURL()]) Class.forName("com.mysql.cj.jdbc.Driver", true, classLoader) // 建立连接 def conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd) // 这里写你的数据库操作逻辑... conn.close()
划重点:MySQL 8.0之后官方已经废弃了
com.mysql.jdbc.Driver,改用com.mysql.cj.jdbc.Driver,别再用旧类名了,避免后续兼容问题。
方法三:通过Jenkins插件辅助管理(可选)
安装Jenkins的"JDBC Plugin"插件,之后可以在全局配置里统一管理JDBC驱动,但这种方式不如直接放lib目录直观,适合多驱动管理的场景。
验证驱动是否加载成功
重启Jenkins后,进系统管理→脚本控制台,跑下面的代码测试:
try { Class.forName("com.mysql.cj.jdbc.Driver") println("MySQL驱动加载成功") } catch (ClassNotFoundException e) { println("驱动加载失败: " + e.getMessage()) }
内容的提问来源于stack exchange,提问作者niladri chakrabarty
相关产品推荐
相关产品推荐

