我一直在尝试遵循一些关于在 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,还剩下什么?