打嗝1.0.0-beta1错误

Kev*_*vin 9 clojure compojure hiccup

我正在使用hiccup-1.0.0-beta1创建一个compojure项目.我运行时得到以下堆栈跟踪lein ring server-headless:

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)
Run Code Online (Sandbox Code Playgroud)

这对我来说很困惑,因为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
$ 
Run Code Online (Sandbox Code Playgroud)

此外,我的代码甚至没有尝试引入page_helpers.clj:

(ns views.layout 
    (:require [app-config :as config])
    (:use hiccup.core)
    (:use hiccup.page)
    (:use hiccup.element))
Run Code Online (Sandbox Code Playgroud)

Hui*_*nan 4

我也有同样的麻烦。

我认为您正在使用 dev-dependency lein-ring。如果你查看你的project/lib/dev文件夹,你会在那里看到hiccup 0.3.X jar。这是因为文件ring-devel jar文件使用了旧的hiccup。我猜问题的原因是这些文件之间的冲突有关。但我还没有找到解决这个问题的方法。

但是,如果您使用leinring uberwar创建可部署文件,则该文件可以在另一个容器(例如 tomcat)中正常工作。