【发布时间】:2017-09-03 14:27:40
【问题描述】:
我的目标是使用 compojure 创建一个 Web 应用程序并将 datomic 附加为数据库。单独地,这两个组件工作正常。但是,当我尝试启动服务器时
lein ring server-headless (包括作为依赖项的 datomic)有一个巨大的错误。错误输出的头部:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/util/component/AggregateLifeCycle, compiling:(ring/adapter/jetty.clj:1:1)
at clojure.lang.Compiler.load(Compiler.java:7391)
at clojure.lang.RT.loadResourceScript(RT.java:372)
at clojure.lang.RT.loadResourceScript(RT.java:363)
at clojure.lang.RT.load(RT.java:453)
at clojure.lang.RT.load(RT.java:419)
at clojure.core$load$fn__5677.invoke(core.clj:5893)
使用project.clj
(defproject pinvest "0.1.0-SNAPSHOT"
:description "foobar"
:min-lein-version "2.0.0"
:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/core.async "0.3.442"]
[org.clojure/tools.namespace "0.2.11"]
[compojure "1.5.1"]
[ring/ring-defaults "0.2.1"]
[com.datomic/clj-client "0.8.606"]]
:plugins [[lein-ring "0.9.7"]]
:ring {:handler pinvest.handler/app}
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring/ring-mock "0.3.0"]]}})
最初使用lein new compojure foo 生成。依赖com.datomic/clj-client 导致启动服务器时出现问题。
我尝试排除一些依赖项,将我的project.clj 设为
[com.datomic/clj-client "0.8.606"
:exclusions [org.eclipse.jetty/jetty-http
org.eclipse.jetty/jetty-util
org.eclipse.jetty/jetty-client]]
但这只会导致
clojure.lang.Compiler$CompilerException: java.lang.ClassNotFoundException: org.eclipse.jetty.client.HttpClient, compiling:(cognitect/http_client.clj:1:1)
任何帮助将不胜感激。
PS。我是clojure的新手,这些错误信息简直无法理解
【问题讨论】:
-
com.datomic/clj-client "0.8.606"应该使用哪个版本的码头? -
使用
lein deps :tree给我 [org.eclipse.jetty/jetty-client "9.3.7.v20160115][org.eclipse.jetty/jetty-io"9.3.7.v20160115"][ org.eclipse.jetty/jetty-http "9.3.7.v20160115"][org.eclipse.jetty/jetty-util "9.3.7.v20160115"] -
你能在本地 .m2 maven repo 的 jar 文件中看到 AggregateLifeCycle 类文件吗?如果它在指向的 jar 文件之一(可能是 jetty-util)中不存在,则错误消息是有意义的。
-
我检查了 m2 存储库中的所有 jar 文件。原来 `org/eclipse/jetty-util/ 包含两个版本。 7.6.13.v20130916 和 9.3.7.v20160115。只有 7.x 版本包含 AggregateLifeCycle 类文件。
-
我该如何解决这个依赖问题?
标签: clojure compojure ring datomic