【问题标题】:Clojure ring server seems to be missing dependencies on slf4jClojure 环服务器似乎缺少对 slf4j 的依赖项
【发布时间】:2014-05-17 20:40:49
【问题描述】:

我一直在尝试遵循一些关于在 Clojure 中构建 Web 应用程序的教程,但我一直遇到同样的问题。以最简单的情况为例,我尝试按照本教程进行操作:http://drtom.ch/posts/2012-12-10/An_Introduction_to_Webprogramming_in_Clojure_-_Ring_and_Middleware/

当我进入启动服务器的步骤(run-jetty handler {:port 8383})时,我收到以下错误:

NoSuchMethodError org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava/lang/String;[Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple; org.eclipse.jetty.util.log.JettyAwareLogger.log (JettyAwareLogger.java:613)

我让lien 向我展示了类路径,果然,org.slf4j.helpers.MessageFormatter 不在那里。

我在我尝试过的几乎所有基于环的网络教程中都遇到过这个问题,所以要么我配置了一些奇怪的东西(我更新并重新安装了 lein,吹掉了我的 ~/.m2 并重建了,等等),或者在组合在一起构成类路径的无数依赖项中发生了一些变化。

有什么想法吗?

编辑

我得到了更多信息——我在 virtualbox 中创建了一个 VM,安装了 OpenJDK 和 lein,并在那里创建了一个项目。它工作得很好。由于我在与主机共享的目录中创建它,然后我尝试在主机的同一目录中执行“lein ring server”,但失败并出现上述错误。

所以我在 vm 和主机中都做了“lein classpath”并比较了结果——它们是相同的。我还检查了他们运行的是相同 JVM 的相同版本(OpenJDK 64 位版本 24.51-b03)。

那么,如果他们使用相同的类路径运行相同的 JVM,还剩下什么?

【问题讨论】:

  • 那个教程很老了。您是否尝试过使用较新版本的 Clojure(例如 1.5.1 或更高版本)和当前版本的 Ring(例如 1.2.2)?
  • 我已经尝试了六种不同的关于 ring、luminus、compojure、noir 的教程......我一直遇到同样的问题。
  • 能否包含您的 project.clj 文件以显示您正在使用的依赖项?
  • 这正是我链接到的教程中的那个......(defproject quickstart "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.3 .0"] [环 "1.1.5"]])

标签: clojure ring luminus


【解决方案1】:

您可以尝试像下面这样更新依赖项吗?

(defproject ..........
:dependencies [[org.clojure/clojure "1.5.1"]
         [ring/ring-core "1.1.8"]
         [ring/ring-jetty-adapter "1.1.8"]
         [compojure "1.1.3"]]
:main quickstart.core
:min-lein-version "2.0.0"
:plugins [[lein-ring "0.8.10"]]
:ring {:handler quickstart.core/handler})

如果你使用上面配置的 lein ring 插件,你可以像这样启动应用程序:

lein ring server

【讨论】:

  • 不。同样的错误——org.slf4j.helpers.MessageFormatter.arrayFormat 上的 NoSuchMethodError。
  • 你在更换部门后尝试过“lein clean”吗?从使用“lein new”创建的空白模板开始也很好。您可以使用“lein deps :tree”检查项目的依赖关系,并查看类路径中的 slf4j 版本
  • 我确实尝试过 lein clean,我也从空白模板尝试过。结果相同。
猜你喜欢
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 2021-03-07
  • 2013-08-11
  • 2019-04-08
  • 1970-01-01
  • 2017-12-25
  • 2015-04-18
相关资源
最近更新 更多