Ich versuche, jdbc Postgresql-Treiber zu gradle Skript hinzufügen, ich habe die Bildskript.dependencies.classpath DSL, aber groovy.sql.Sql kann es nicht finden. so habe ich versucht, die Classpath Druck: ((URLClassLoader)this.class.classloader).getURLS.each{ println("#### ${it}") }
Gradle Skript Classpath enthält nur Skript Klasse
alles, was gedruckt wurde, war das Verzeichnis, in dem die gradle Temp kompilierten Dateien befinden, also wo ist die ganze Rest der Verzeichnisse? Krug ? BTW ich kann in meinem Skript importieren und instanziieren Klassen aus dem postgres sql-Paket. meine Vermutung ist, dass die sql-Pakete nach der Klasse im falschen Classloader suchen, genau wie ich, also weiß jemand, wie man den Klassenlader ergreift? Wird der Treiber instanziiert und dem DriverManager hinzugefügt, um das Problem zu lösen?
Mit Blick auf DriverManager Quellcode scheint es, dass, selbst wenn ich manuell einen Treiber in DriverManager durch Instanziierung es selbst es nicht hilft, wie es überprüft, dass der Klassenlader, die gefunden wurde, diese Klasse laden kann. Die getClassLoader-Methode ist nativ und daher ist es schwer, ihren Code zu finden. Ich werde den verdammten GroovyObject.class.classLoader-Hack verwenden, der die gleichen Klassen in den lokalen Klassenpfad lädt und damit fertig ist, aber ich verstehe immer noch nicht, wie der Klassenpfad in Gradle angelegt ist: -? – codeScriber