Gary,
You are probably removing try/catch as well. ClassNonFoundException is
expected and silenced with catch.
(defn cl-factory
Returns a Commons Logging-based implementation of the
LoggerFactory
protocol, or
nil if not available.
[]
(try
(Class/forName foo.bar)
; eval removed
I think you're confusing compile-time with run-time. A try-catch
wouldn't affect the compiler. Perhaps you actually have
commons-logging in your classpath? It's pulled in by many libraries.
Or you forgot to remove the quote in addition to removing the eval in
your testing.
Here's the code that
Also I think this line doesn't actually do anything: (Class/forName
foo.bar)
It will effectively just ask the classloader to load the class. You
removed more than the eval in your referenced code, you removed the code
that did anything. That code needs to be there. It's eval'd because
Gary,
You were right with your initial reply. Sorry I did not get it. Thanks
for your help in understanding this.
On Nov 22, 1:58 pm, Gary Trakhman gary.trakh...@gmail.com wrote:
Also I think this line doesn't actually do anything: (Class/forName
foo.bar)
It will effectively just ask the
If you try to do it without eval and you don't have the apache stuff
on your classpath, then you get an exception while compiling, before
class/forname is ever called.
On Nov 22, 11:33 am, vitalyper vitaly...@yahoo.com wrote:
Gary,
You were right with your initial reply. Sorry I did not get
Came across this code in clojure.tools.logging
(defn cl-factory
Returns a Commons Logging-based implementation of the LoggerFactory
protocol, or
nil if not available.
[]
(try
(Class/forName org.apache.commons.logging.Log)
(eval
`(do
(extend
My speculation is that the eval is required in the case that commons-logger
is not in the classpath. The code wouldn't compile without it.
--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
I don't think you are right - it does compiles without it.
After more thinking my guess is that eval is used to combine extend
and reify in the same function. Let's see if somebody else could shed
a light on this.
On Nov 18, 12:45 pm, Gary Trakhman gary.trakh...@gmail.com wrote:
My speculation
I get this when i try it in a blank project, removing the eval and the
quote:
Unknown location:
error: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
core.clj:16:8:
error: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
(core.clj:16)
Compilation failed.