![](https://secure.gravatar.com/avatar/78076830e227aaf856005119d7e78c2f.jpg?s=120&d=mm&r=g)
El 18/05/12 00:21, Alessio Stalla escribió:
On Thu, May 17, 2012 at 11:04 PM, Francisco Vides Fernández <fvides@igaleno.com> wrote:
Hello everyone
I intend to use ABCL in one of my projects. I've started to connectiing to a postgresq database via jdbc. I've tried something like:
-------8<------- (add-to-classpath (merge-pathnames #p".m2/repository/postgresql/postgresql/8.4-702.jdbc4/postgresql-8.4-702.jdbc4.jar" (user-homedir-pathname)))
(jstatic "forName" "java.lang.Class" "org.postgresql.Driver") -------8<-------
But it always returns -------8<------- Java exception 'java.lang.ClassNotFoundException: org.postgresql.Driver'. [Condition of type JAVA-EXCEPTION] -------8<------- The jar file exists, and has the proper class inside. I've read the manual, and googled a bit, but still get the same error. I'm using Ubuntu Linux, with OpenJDK 1.6.0_24, and the latest and greatest ABCL downloaded as a binary from ABCL website. Can someone point me what I'm doing wrong? TL;DR: use (java:jclass "org.postgresql.Driver"). [snip]
Yes, that did the trick, but now I've the following code: --------------8x-------------- (java:jclass "org.postgresql.Driver") #<java.lang.Class class org.postgresql.Driver {67AFF9E8}> ;; the driver loads, yay! (java:jstatic "getConnection" "java.sql.DriverManager" "jdbc:postgresql://localhost:5432/test") --------------8x-------------- Throws: --------------8x-------------- Java exception 'java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/test'. [Condition of type JAVA-EXCEPTION] --------------8x-------------- But the equivalent java code works: --------------8x-------------- public class JdbcConn { public static void main(String[] args) { try { Class.forName("org.postgresql.Driver"); java.sql.Connection c = java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/test"); } catch(Exception e) { e.printStackTrace(System.err); } } } --------------8x-------------- I fail to see how the ClassLoader machinery affects this. The org.postgresql.Driver class self-registers with driver manager, in a static block of code: --------------8x-------------- java.sql.DriverManager.registerDriver(new Driver()); --------------8x-------------- But apparently that isn't happening. I've even tried to do that by hand but nothing. Some clue on what's happening? -- +----------------- | Francisco Vides Fernández <fvides@igaleno.com> | Gerente | Teléfono fijo: 952 60 29 59 | Fax: 952 60 29 59 | igaleno http://www.igaleno.com/ +------