我正在开始一个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)
我做错了什么?
答案 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。感谢您的反馈!