2014-10-28 76 views
0

Jenkins接縫忽略來自/ etc/environment或/etc/profile.d/jdk.sh的系統CLASSPATH參數。我嘗試運行Scriptler Groovy腳本,但我得到這個錯誤:Jenkins腳本控制檯/ Scriptler中的連接器/ J MySQL驅動程序

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321 

我在詹金斯已經(https://wiki.jenkins-ci.org/display/JENKINS/MySQL+Database+Plugin)安裝了MySQL數據庫插件,但仍無法加載詹金斯控制檯也不Scriptler發現MySQL驅動:

import groovy.sql.Sql 
Sql.newInstance("jdbc:mysql://HOST:3306/DB", "USER", "PASS", "com.mysql.jdbc.Driver") 

i之後設置CLASSPATH Jenkis下的 「全局屬性」> 「環境變量」 來

Name CLASSPATH 
Value .:/var/lib/jenkins/plugins/database-mysql/WEB-INF/lib/mysql-connector-java-5.1.21.jar 

詹金斯能夠運行J obs但仍然Jenkins腳本控制檯/ Scriptler無法找到該jar文件。

回答

6

Finaly我想出如何使用MySQL JDBC驅動程序Scriptler:

  1. 找出默認的Java類路徑迪爾斯(在詹金斯腳本控制檯運行):

println System.getProperty("java.ext.dirs")

/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext:/usr/java/packages/lib/ext

  1. 將默認Java類路徑添加到mysql-connector-java - *。jar:

cp mysql-connector-java-*.jar /usr/java/packages/lib/ext/

  • 重啓詹金斯
  • 詹金斯作業和Scriptler/Groovy腳本現在應該不用像CLASSPATH任何附加參數工作。

    +0

    它的工作。謝謝你panticz.de。 – 2017-11-28 09:41:02

    0

    修改詹金斯classLoader也應努力:

    this.class.classLoader.addURL(new URL("file://${System.getProperty('user.home')}/plugins/database-mysql/WEB-INF/lib/mysql-connector-java-5.1.21.jar")) 
    import groovy.sql.Sql 
    
    someapp = '[A-Z]+SOME_APP[0-9]*' 
    someenv = 'Production' 
    somestatus = '1' 
    
    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 } 
    sql.close() 
    return result 
    
    相關問題