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 fails to compile.  All I did was remove eval and
the quote around the 'do'.

(ns testclj.core)

(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")

    (do
       (extend org.apache.commons.logging.Log
         Logger
         {:enabled?
          (fn [logger# level#]
            (condp = level#
              :trace (.isTraceEnabled logger#)
              :debug (.isDebugEnabled logger#)
              :info  (.isInfoEnabled  logger#)
              :warn  (.isWarnEnabled  logger#)
              :error (.isErrorEnabled logger#)
              :fatal (.isFatalEnabled logger#)
              (throw (IllegalArgumentException. (str level#)))))
          :write!
          (fn [logger# level# e# msg#]
            (if e#
              (condp = level#
                :trace (.trace logger# msg# e#)
                :debug (.debug logger# msg# e#)
                :info  (.info  logger# msg# e#)
                :warn  (.warn  logger# msg# e#)
                :error (.error logger# msg# e#)
                :fatal (.fatal logger# msg# e#)
                (throw (IllegalArgumentException. (str level#))))
              (condp = level#
                :trace (.trace logger# msg#)
                :debug (.debug logger# msg#)
                :info  (.info  logger# msg#)
                :warn  (.warn  logger# msg#)
                :error (.error logger# msg#)
                :fatal (.fatal logger# msg#)
                (throw (IllegalArgumentException. (str
                                                   level#))))))})
       (reify LoggerFactory
         (name [_#]
           "org.apache.commons.logging")
         (get-logger [_# logger-ns#]
           (org.apache.commons.logging.LogFactory/getLog (str logger-
                                                              ns#)))))
    (catch Exception e nil)))



On Tue, Nov 22, 2011 at 1:34 PM, vitalyper <vitaly...@yahoo.com> wrote:
> 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
>    (catch Exception e nil)))
>
> On Nov 18, 5:16 pm, Gary Trakhman <gary.trakh...@gmail.com> wrote:
>> 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.
>
> --
> 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
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to