我无法将清晰度视为依赖

时间:2012-03-09 21:59:59

标签: clojure leiningen

我正在开始一个clojure的玩具项目。我决定尝试一下。我安装了leiningen和clojure,我管理了运行lein install并通过emacs使用它。虽然,我无法将清晰度作为我项目的依赖:

;;;project.clj
(defproject sms-client "1.0.0-SNAPSHOT"
  :description "This is meant to be an sms client"
  :dependencies [[org.clojure/clojure "1.2.1"]
             [clarity "0.5.5"]])

;;;src/sms_client/core.clj
(ns sms-client.core
   (:require [clarity.form :as form]
             [clarity.dev :as dev]))

(def the-form
(form/form
  :login ""
  :password ""))

(dev/show-comp the-form)

这令人兴奋:

clojure.lang.RT.keyword(Ljava/lang/String;Ljava/lang/String;)Lclojure/lang/Keyword;
  [Thrown class java.lang.NoSuchMethodError]

Restarts:
 0: [QUIT] Quit to the SLIME top level

Backtrace:
  0: clarity.component__init.__init0(Unknown Source)
  1: clarity.component__init.<clinit>(Unknown Source)
  2: java.lang.Class.forName0(Native Method)
  3: java.lang.Class.forName(Class.java:264)
  4: clojure.lang.RT.loadClassForName(RT.java:1578)
  5: clojure.lang.RT.load(RT.java:399)
  6: clojure.lang.RT.load(RT.java:381)
  7: clojure.core$load$fn__4519.invoke(core.clj:4915)
  8: clojure.core$load.doInvoke(core.clj:4914)
  9: clojure.lang.RestFn.invoke(RestFn.java:408)
 10: clojure.core$load_one.invoke(core.clj:4729)
 11: clojure.core$load_lib.doInvoke(core.clj:4766)
 12: clojure.lang.RestFn.applyTo(RestFn.java:142)
 13: clojure.core$apply.invoke(core.clj:542)
 14: clojure.core$load_libs.doInvoke(core.clj:4800)
 15: clojure.lang.RestFn.applyTo(RestFn.java:137)
 16: clojure.core$apply.invoke(core.clj:542)
 17: clojure.core$require.doInvoke(core.clj:4881)
 18: clojure.lang.RestFn.invoke(RestFn.java:619)
 19: clarity.form$eval1651$loading__4414__auto____1652.invoke(form.clj:1)
 20: clarity.form$eval1651.invoke(form.clj:1)
 21: clojure.lang.Compiler.eval(Compiler.java:5424)
 22: clojure.lang.Compiler.eval(Compiler.java:5415)
 23: clojure.lang.Compiler.load(Compiler.java:5857)
 24: clojure.lang.RT.loadResourceScript(RT.java:340)
 25: clojure.lang.RT.loadResourceScript(RT.java:331)
 26: clojure.lang.RT.load(RT.java:409)
 27: clojure.lang.RT.load(RT.java:381)
 28: clojure.core$load$fn__4519.invoke(core.clj:4915)
 29: clojure.core$load.doInvoke(core.clj:4914)
 30: clojure.lang.RestFn.invoke(RestFn.java:408)
 31: clojure.core$load_one.invoke(core.clj:4729)
 32: clojure.core$load_lib.doInvoke(core.clj:4766)
 33: clojure.lang.RestFn.applyTo(RestFn.java:142)
 34: clojure.core$apply.invoke(core.clj:542)
 35: clojure.core$load_libs.doInvoke(core.clj:4800)
 36: clojure.lang.RestFn.applyTo(RestFn.java:137)
 37: clojure.core$apply.invoke(core.clj:542)
 38: clojure.core$require.doInvoke(core.clj:4881)
 39: clojure.lang.RestFn.invoke(RestFn.java:421)
 40: sms_client.core$eval1645$loading__4414__auto____1646.invoke(NO_SOURCE_FILE:1)
 41: sms_client.core$eval1645.invoke(NO_SOURCE_FILE:1)
 42: clojure.lang.Compiler.eval(Compiler.java:5424)
 43: clojure.lang.Compiler.eval(Compiler.java:5415)
 44: clojure.lang.Compiler.eval(Compiler.java:5391)
 45: clojure.core$eval.invoke(core.clj:2382)
 46: swank.commands.basic$eval_region.invoke(basic.clj:47)
 47: swank.commands.basic$eval_region.invoke(basic.clj:37)
 48: swank.commands.basic$eval849$listener_eval__850.invoke(basic.clj:71)
 49: clojure.lang.Var.invoke(Var.java:365)
 50: user$eval1641.invoke(NO_SOURCE_FILE)
 51: clojure.lang.Compiler.eval(Compiler.java:5424)
 52: clojure.lang.Compiler.eval(Compiler.java:5391)
 53: clojure.core$eval.invoke(core.clj:2382)
 54: swank.core$eval_in_emacs_package.invoke(core.clj:92)
 55: swank.core$eval_for_emacs.invoke(core.clj:239)
 56: clojure.lang.Var.invoke(Var.java:373)
 57: clojure.lang.AFn.applyToHelper(AFn.java:167)
 58: clojure.lang.Var.applyTo(Var.java:482)
 59: clojure.core$apply.invoke(core.clj:540)
 60: swank.core$eval_from_control.invoke(core.clj:99)
 61: swank.core$eval_loop.invoke(core.clj:104)
 62: swank.core$spawn_repl_thread$fn__617$fn__618.invoke(core.clj:309)
 63: clojure.lang.AFn.applyToHelper(AFn.java:159)
 64: clojure.lang.AFn.applyTo(AFn.java:151)
 65: clojure.core$apply.invoke(core.clj:540)
 66: swank.core$spawn_repl_thread$fn__617.doInvoke(core.clj:306)
 67: clojure.lang.RestFn.invoke(RestFn.java:397)
 68: clojure.lang.AFn.run(AFn.java:24)
 69: java.lang.Thread.run(Thread.java:679)

我做错了什么?

2 个答案:

答案 0 :(得分:4)

清晰度为“0.5.5”,它正在爆炸的require

user=> (require 'clarity.form)         
java.lang.NoSuchMethodError: clojure.lang.RT.keyword(Ljava/lang/String;Ljava/lang/String;)Lclojure/lang/Keyword; (form.clj:1)

清晰度“0.5.5”似乎不适用于clojure 1.2.1,但确实适用于clojure 1.3.0
您可以 使用清晰度“0.5.3”并坚持使用clojure 1.2.1或保持清晰度0.5.5并切换到clojure 1.3.0。

我个人建议使用两者的最新版本。

答案 1 :(得分:4)

这是AOT编译,使库jar与Clojure 1.2不兼容。我并不是要放弃对1.2的支持,所以我已经修复了这个并且刚刚发布了Clarity 0.5.6。感谢您的反馈!