Guest User

Untitled

a guest
Nov 23rd, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. import java.sql.Connection
  2. import java.sql.DriverManager
  3. import java.sql.SQLException
  4.  
  5. def loaders = [this.class.classLoader, Thread.currentThread().contextClassLoader]
  6. def changeClasspath = {cl ->
  7. if (cl.metaClass.respondsTo(cl, 'addURL', java.net.URL)) {
  8. cl.addURL(new File('.').toURI().toURL())
  9.  
  10. def libDir = new File("libs")
  11. libDir.eachFile {file->
  12. cl.addURL(file.toURI().toURL())
  13. }
  14. }
  15. }
  16. for (cl in loaders) {
  17. changeClasspath(cl)
  18. }
  19.  
  20.  
  21. def db = [url:'jdbc:postgresql:testdb', user:'test', password:'test', driver:'org.postgresql.Driver']
  22. def testCl = {cl->
  23. def driverClass = cl.loadClass(db.driver)
  24. println "== cl ${cl} =="
  25. println "driverClass ${driverClass}"
  26. println "driverClass.classLoader ${driverClass.classLoader}"
  27. DriverManager.registerDriver(driverClass.newInstance())
  28. Connection c = null
  29. try {
  30. c = DriverManager.getConnection(db.url, db.user, db.password)
  31. println 'ok'
  32. } catch (SQLException e) {
  33. println "error ${e.getMessage()}"
  34. } finally {
  35. if (c) {
  36. c.close()
  37. }
  38. }
  39. }
  40.  
  41. for (cl in loaders) {
  42. testCl(cl)
  43. }
  44.  
  45. def sysCl = this.class.classLoader.systemClassLoader
  46. changeClasspath(sysCl)
  47. testCl(sysCl)
Add Comment
Please, Sign In to add comment