我一直在嘗試遵循一些關於在Clojure中構建一個Web應用程序的教程,但我一直在遇到同樣的問題。舉最簡單的例子,我想下面這個教程:http://drtom.ch/posts/2012-12-10/An_Introduction_to_Webprogramming_in_Clojure_-_Ring_and_Middleware/Clojure環服務器似乎缺少對slf4j的依賴關係
當我到啓動服務器的步驟(運行碼頭處理{:端口8383}),我收到以下錯誤:
的NoSuchMethodError org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava /郎/字符串; [Ljava /郎/對象;)Lorg/SLF4J /助手/ FormattingTuple; org.eclipse.jetty.util.log.JettyAwareLogger.log(JettyAwareLogger.java:613)
我問留置給我看classpath,果然,org.slf4j.helpers.MessageFormatter不在任何地方。
我在幾乎所有基於環的網絡教程中都碰到過這個問題,因此我要麼配置了一些奇怪的東西(我更新並重新安裝了lein,吹走了〜/ .m2並重建,等等),或者在構建類路徑的無數依賴項中發生了變化。
任何想法這裏發生了什麼?
編輯
我已經得到了進一步的信息 - 我在VirtualBox中創建一個虛擬機,安裝的OpenJDK和雷音,並創建了一個項目出現。它運行良好。由於我已經在與主機共享的目錄中創建了它,因此我嘗試在主機的同一目錄中執行「lein ring server」,並且因上述錯誤而失敗。
因此,我在vm和宿主中都做了「lein classpath」,並比較了結果 - 它們是相同的。我還檢查了他們正在運行相同JVM的相同版本(OpenJDK 64位版本24.51-b03)。
因此,如果他們使用相同的類路徑運行相同的JVM,剩下的是什麼?
該教程是很老。你是否嘗試過使用更新版本的Clojure(例如1.5.1或更高版本)和當前版本的Ring(例如1.2.2)? –
我已經嘗試了六個不同的教程環,luminus,compojure,noir,...我一直遇到同樣的問題。 – scottb
您是否可以包含您的project.clj文件以顯示您正在使用的依賴關係? – GregA100k