Search code examples
mysqljenkinsgroovy

jenkins groovy ClassNotFoundException: com.mysql.jdbc.Driver


I've been searching answer to this issue for a long while without any luck.

Jenkins: 2.405
Database Plugin: 191.vd5981b_97a_5fa_
MySQL Database Plugin: 1.4

The error msg:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:511)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)

The code:

import groovy.sql.Sql
def sql = Sql.newInstance("jdbc:mysql://foo.com/somedb", "user", "pass", "com.mysql.jdbc.Driver")
query = "SELECT somefield FROM sometable WHERE somefield REGEXP '$somevar' AND environment='$someenv' AND status='$somestatus'"
def result = sql.rows(query).collect{ it.name }.sort{ it.find(/\d+$/) as int }

tried the solution provided in other post but not work Class.forName("com.mysql.jdbc.Driver")

tried the solution provided in other post but not work Class.forName("com.mysql.cj.jdbc.Driver")

I tried to manually load the jar println System.getProperty("java.ext.dirs"), but this parameter is not available in this version of Jenkins.

How can I solve this?


Solution

  • it seems I've figured it out by following steps:

    cp ~/plugins/database-mysql/WEB-INF/lib/mysql-connector-java-8.0.22.jar ~/war/WEB-INF/lib
    

    then restart jenkins... wola! it works.