之间的关系:aot指令和警告:*分隔符*未声明为动态

时间:2012-04-10 17:38:58

标签: clojure leiningen

我正在使用Leiningen 1.7.1和Clojure 1.3.0。我的问题是,如果有的话,是:aot编译器指令和指示我的defs的错误消息之间的关系 不动态吗?

以下是详细信息:

如果我从我的任何project.clj文件中删除:aot指令(两个库和一个依赖于它们的main),我得到警告: delimiter 未声明为动态,因此不是动态的rebindable。

如果我修改这样的语句

(def bene-ssn-idx 16)
(def gic-ssn-idx 2)

包含动态指令,我得到这个运行时错误

线程“main”中的异常java.lang.IllegalStateException:无法动态绑定非动态var:clojure-csv.core / strict

有一次我记得听说Clojure 1.3中有关于第一条警告信息的问题并且它将被修复。

我很高兴能够拥有更长时间的构建,因为:aot,但我仍然在想 警告和错误意味着什么,除了为什么要删除:aot产生警告。

1 个答案:

答案 0 :(得分:2)

您正在使用不符合Clojure 1.3标准的clojure-csv版本:其耳罩变量未声明为动态。我不知道使用提前编译如何防止这个问题的细节。