打嗝 1.0.0-beta1 错误

Posted

技术标签:

【中文标题】打嗝 1.0.0-beta1 错误【英文标题】:hiccup 1.0.0-beta1 error 【发布时间】:2012-03-23 05:59:33 【问题描述】:

我正在使用 hiccup-1.0.0-beta1 创建一个复合项目。当我运行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)

这让我很困惑,因为文件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.3.8 并且(在修复 :use 语句之后)代码工作正常...... 【参考方案1】:

我也遇到了同样的问题。

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

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

【讨论】:

在 maven 中我可以进行依赖排除...我还不是 lein 专业人士,但我想知道是否有办法从 lein-ring 中排除打嗝?但很好的收获,这让我很困扰...... 这是您排除依赖项的方式: :dev-dependencies [[lein-ring "0.5.4" :exclusions [hiccup]]] 但我仍然遇到错误 根据这个 github 问题github.com/weavejester/hiccup/issues/41#issuecomment-4423262,这将仅在 Ring 1.1 中修复

以上是关于打嗝 1.0.0-beta1 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Eclipse IDE 中使用 Scala 代码。内部编译器错误

人为什么打嗝?

为啥 twitter 在调整大小时会在 Google Chrome 上启动“打嗝”?

打嗝放屁都要被征排碳税,新西兰的牛羊不干了

iOS 14 背部双击骚操作:播报剩余电量+打嗝...

Cygwin 和 Grub 又来了!差不多了