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 wrote:
> Gary,
>
> You were right with your initial reply. Sorry I did not get it. Thanks
> for yo
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 wrote:
> Also I think this line doesn't actually do anything: (Class/forName
> "foo.bar")
>
> It will effectively just ask the classloader to load
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 it
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 f
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 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.
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 wrote:
> My speculation is that the eval is requ
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