0

我一直在尝试遵循一些关于在 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”,但由于上述错误而失败。

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

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

4

1 回答 1

0

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

(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
于 2014-05-18T04:43:54.910 回答