2

上下文:我正在编写要在 Amazon EMR 中运行的 Cascalog 作业。Cascalog 是一个基于 clojure 的运行 MapReduce 的库。当作业由于一些奇怪的类加载异常而失败时。

在工作中,我使用了一个名为 geocoder 的库,它是一个基于 clojure 的 geoip 查找库。特别是我使用了查看 maxmind GeoLiteCity.dat 文件的库部分。我发现导致作业失败的代码部分是使用地理编码器库的部分。**

最奇怪的是,虽然删除这部分代码会导致工作成功,但注释掉不会......只是想知道是否有人知道发生了什么?

** 我像这样使用地理编码器库的方式

(ns utils.geoip (:use [geocoder.core]))

然后我的工作将需要以上

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

4

1 回答 1

1

您的问题的答案可能取决于您使用哪种技术来注释掉有问题的代码?即您使用;的是多行宏还是多行(comment foo)宏?

我问的原因是,虽然注释掉的代码;被完全忽略了,但comment宏需要一个语法正确的 S 表达式作为主体;因此,一个简单的语法错误可能会导致您认为被忽略的代码中出现意外错误。

换句话说:注释宏不允许任意文本。

于 2012-05-18T15:01:57.340 回答