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



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

以下是详细信息:

如果我从任何 project.clj 文件(两个库和一个依赖于它们的 main 文件)中删除 :aot 指令,我会收到警告:分隔符未声明为动态,因此不可动态重新绑定。

如果我修改这样的语句

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

包含动态指令,我收到此运行时错误

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

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

由于 :aot,我非常高兴能忍受更长的构建,但我仍然想知道警告和错误的含义,以及删除 :AOT 产生警告的原因。

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

最新更新