2014-05-17 67 views
0

我一直在嘗試遵循一些關於在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,剩下的是什麼?

+0

該教程是很老。你是否嘗試過使用更新版本的Clojure(例如1.5.1或更高版本)和當前版本的Ring(例如1.2.2)? –

+0

我已經嘗試了六個不同的教程環,luminus,compojure,noir,...我一直遇到同樣的問題。 – scottb

+0

您是否可以包含您的project.clj文件以顯示您正在使用的依賴關係? – GregA100k

回答

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 server 
+0

沒有。相同的錯誤 - org.slf4j.helpers.MessageFormatter.arrayFormat上的NoSuchMethodError。 – scottb

+0

更換折扣後,您是否嘗試過「lein clean」?也可以從使用「lein new」創建的空白模板開始。您可以使用「lein deps:tree」檢查項目的依賴關係,並查看哪些slf4j版本在類路徑中 – lorthos

+0

我確實嘗試了lein clean,並且我也從空白模板嘗試了它。同樣的結果。 – scottb