clojure.contrib中的某些代码与clojure 1.3冲突?
由于Clojure 1.3“耳罩VAR不再自动被认为是动态的”,Clojure.contrib中的一些代码依赖于此功能,它们不再工作。例如clojure.contrib.sql中的dbclojure.contrib中的某些代码与clojure 1.3冲突?,clojure,Clojure,由于Clojure 1.3“耳罩VAR不再自动被认为是动态的”,Clojure.contrib中的一些代码依赖于此功能,它们不再工作。例如clojure.contrib.sql中的db Warning: *db* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *db* or change
Warning: *db* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *db* or change the name.
Exception in thread "main" java.lang.RuntimeException: java.lang.ExceptionInInitializerError
contrib库仍在verion 1.2中。如何解决这个问题?或者是否有某种alpha或预发布版本的contrib库可以与Clojure 1.3配合使用?当Clojure迁移到1.3时,决定放弃单一contrib库,即一个包含大量独立项目的contrib库。原因是一些图书馆已经被废弃,很难让人们升级到1.3版本 此外,一些图书馆也更改了名称。可在此处找到概述:
特别是contrib.sql库已被重命名为
java.jdbc
,现在生活在这里通常vars都被屏蔽了,不希望反弹,因此没有它一切都可以正常工作
也就是说,您可以按如下方式重新定义旧的var,使其可以动态地重新绑定:
(in-ns 'other.ns)
(def ^:dynamic *foo* *foo*)
(在ns’other.ns中)
(定义^:动态*foo**foo*)
谢谢你,保罗。切换到java.jdbc模块,问题就解决了。