2012-05-18 62 views
2

上下文:我正在編寫Cascalog作業以在Amazon EMR中運行。 Cascalog是運行MapReduce的基於clojure的庫。當作業由於某種奇怪的類加載異常而失敗時。已註釋掉導致clojure運行時錯誤的代碼

在工作中,我使用一個名爲geocoder的庫,它是一個基於clojure的geoip查找庫。特別是我使用了查看maxmind GeoLiteCity.dat文件的lib部分。我發現導致作業失敗的部分代碼是使用地理編碼器庫的部分。**

最奇怪的是,雖然刪除這部分代碼會導致作業成功,評論不會...只是想知道是否有人知道發生了什麼?

** 我使用的地理編碼器的lib喜歡的方式使

(NS utils.geoip(:使用[geocoder.core]))

,然後我的工作就需要上述

(ns myjob(:require [utils.geoip:as geoip]))

+0

你得到的錯誤是什麼? – Jeremy

+0

ClassNotFoundException – hiroprotagonist

+0

好的,哪個類?提供儘可能多的細節。 – Jeremy

回答

1

您的問題的答案可能取決於您使用哪種技術來評論出錯代碼?即你使用;還是多行(comment foo)宏?

我問的原因是儘管代碼註釋掉;被完全忽略,但comment宏需要一個語法正確的S表達式作爲body;所以一個簡單的語法錯誤可能會導致您認爲被忽略的代碼中的意外錯誤。

換句話說:評論宏不允許任意文本。

+0

也就是最奇怪的部分是我用過的;因爲我知道(評論...)有這樣的特性它 – hiroprotagonist

+0

所以其 '(geoip的/ GET-IP國內IP地址:> IP地址!)' VS ';(geoip的/ get-ip-country!ip-address:>!ip-address)' – hiroprotagonist