2012-03-05 43 views
9

我使用hiccup-1.0.0-beta1創建了一個compojure項目。我碰到下面的堆棧跟蹤,當我運行lein ring server-headless打嗝1.0.0-beta1錯誤

Caused by: java.lang.IllegalAccessError: defelem does not exist 
at clojure.core$refer.doInvoke(core.clj:3287) 
at clojure.lang.RestFn.applyTo(RestFn.java:139) 
at clojure.core$apply.invoke(core.clj:542) 
at clojure.core$load_lib.doInvoke(core.clj:4781) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:542) 
at clojure.core$load_libs.doInvoke(core.clj:4800) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:544) 
at clojure.core$use.doInvoke(core.clj:4892) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at hiccup.page_helpers$eval17$loading__4414__auto____18.invoke(page_helpers.clj:1) 
at hiccup.page_helpers$eval17.invoke(page_helpers.clj:1) 
at clojure.lang.Compiler.eval(Compiler.java:5424) 

這是令人困惑我,因爲文件page_helpers.clj不再打嗝存在:

$ jar tf lib/hiccup-1.0.0-beta1.jar 
META-INF/MANIFEST.MF 
META-INF/maven/hiccup/hiccup/pom.xml 
META-INF/maven/hiccup/hiccup/pom.properties 
project.clj 
hiccup/compiler.clj 
hiccup/core.clj 
hiccup/def.clj 
hiccup/element.clj 
hiccup/form.clj 
hiccup/middleware.clj 
hiccup/page.clj 
hiccup/util.clj 
$ 

而且,我的代碼甚至沒有嘗試引入page_helpers.clj:

(ns views.layout 
    (:require [app-config :as config]) 
    (:use hiccup.core) 
    (:use hiccup.page) 
    (:use hiccup.element)) 
+0

恢復到0.3.8和(修正:use語句後)代碼工作正常... – Kevin 2012-03-05 21:29:12

回答

4

我有同樣的麻煩。

我想你正在使用dev-dependency lein-ring。如果你看着你的project/lib/dev文件夾,你會看到打嗝0.3.X jar那裏。這是因爲文件戒指罐文件使用舊呃逆。我想這個問題的原因是與這些文件之間的衝突。但我還沒有想出一個辦法來解決這個問題呢。

但是,如果你使用雷音環uberwar創建可部署的文件,該文件工作在另一個容器(如Tomcat)的就好了。

+1

在maven我可以做依賴項排除...我不是lein專業人員,但我不知道是否有一個從列寧環排除呃逆的方法?但很好的捕獲,這是困擾我... – Kevin 2012-03-09 05:12:35

+0

這是你如何排除依賴關係: :開發依賴[[lein-環「0.5.4」:排除[打嗝]]] 但我仍然越來越錯誤 – Sathish 2012-03-09 19:28:11

+1

根據這個github問題https://github.com/weavejester/hiccup/issues/41#issuecomment-4423262,這將只在1.1環中修復 – Sathish 2012-03-09 20:07:34