Я не могу использовать ясность как зависимость - PullRequest
3 голосов
/ 10 марта 2012

Я начинаю игрушечный проект в ближайшем будущем.Я решил попробовать.Я установил 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 ]

4 голосов
/ 10 марта 2012

Это компиляция AOT, делающая библиотечную флягу несовместимой с Clojure 1.2. Я не хотел отказываться от поддержки 1.2, поэтому я исправил это и выпустил Clarity 0.5.6. Спасибо за отзыв!

4 голосов
/ 10 марта 2012

с ясностью "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.

Лично я рекомендую использовать последние версии обоих.

...