On Oct 16, 2008, at 9:12 PM, Luc Prefontaine wrote:
> Ouf ! I'm not insane, (at least regarding this bug :)))
> This means that (clojure.lang.RT/classForName
> "com.mysql.jdbc.Driver") has no effect on the static code in the
> class.
> This is done in the sql contrib library but it has no effect on the
> list of registered drivers.
Nicely done! Thanks for narrowing that down.
Here's what I found on Mac OS X (10.5.5):
With Java 6, if the driver jar is in my classpath when Clojure starts
up, it's always listed in the response from getDrivers. This is true
whether I give the jar as an entry to "-cp" or if the jar is in a
directory in my java.ext.dirs list.
With Java 5, "clojure.lang.RT/classForName" will return the class, but
the response form getDrivers does not show the class as registered.
However, Class/forName will return the class and cause it to be
registered with the DriverManager.
java version 1.5.0_16
Clojure
user=> (enumeration-seq (java.sql.DriverManager/getDrivers))
nil
user=> (clojure.lang.RT/classForName "com.mysql.jdbc.Driver")
#=com.mysql.jdbc.Driver
user=> (enumeration-seq (java.sql.DriverManager/getDrivers))
nil
user=> (Class/forName "com.mysql.jdbc.Driver")
#=com.mysql.jdbc.Driver
user=> (enumeration-seq (java.sql.DriverManager/getDrivers))
(#=(com.mysql.jdbc.Driver. "[EMAIL PROTECTED]"))
user=>
I'll change clojure.contrib.sql to use Class/forName pending a
possible change in the behavior of clojure.lang.RT/classForName in
this regard.
Please let me know if that fixes things in your environment as well.
--Steve
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---