2016-03-25 37 views
1

我正在逆時針工作在eclipse中的windows。當我運行這段代碼:無法在clojure中加載http-kit庫

(require 'http-kit) 
;; start concurrent requests, get promise, half the waiting time 

    (let [response1 (http-kit/get "https://clojure.org") 
      response2 (http-kit/get "http://clojure.org/")] 
     ;; Handle responses one-by-one, blocking as necessary 
     ;; Other keys :headers :body :error :opts 
     (println "response1's body: " (:body @response1)) 
     (println "response2's status: " (:status @response2))) 

我得到了以下信息:

 
CompilerException java.io.FileNotFoundException: Could not locate http_kit__init.class or http_kit.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name., compiling:(restful_clojure\test.clj:1:1) 

所以,接下來我運行:



    (println (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader)))) 

之後,我得到:

 
(#object[java.net.URL 0x50b65482 file:/E:/workspace/restful-clojure/test/] #object[java.net.URL 0x5f5d7651 file:/E:/workspace/restful-clojure/src/] #object[java.net.URL 0x2878624e file:/E:/workspace/restful-clojure/dev-resources] #object[java.net.URL 0xe56e16d file:/E:/workspace/restful-clojure/resources/] #object[java.net.URL 0x6c26a661 file:/E:/workspace/restful-clojure/target/classes/] #object[java.net.URL 0x58fdaa4a file:/C:/Users/Maciek/.m2/repository/clojure-complete/clojure-complete/0.2.3/clojure-complete-0.2.3.jar] #object[java.net.URL 0x337cc909 file:/C:/Users/Maciek/.m2/repository/http-kit/http-kit/2.1.19/http-kit-2.1.19.jar] #object[java.net.URL 0xa181b82 file:/C:/Users/Maciek/.m2/repository/org/clojure/clojure/1.8.0/clojure-1.8.0.jar] #object[java.net.URL 0x53d4a10e file:/C:/Users/Maciek/.m2/repository/ccw/ccw.server/0.2.0/ccw.server-0.2.0.jar] #object[java.net.URL 0x664eeec4 file:/C:/Users/Maciek/.m2/repository/org/clojure/tools.nrepl/0.2.10/tools.nrepl-0.2.10.jar] #object[java.net.URL 0x33af4785 
file:/C:/Users/Maciek/.m2/repository/org/tcrawley/dynapath/0.2.3/dynapath-0.2.3.jar] #object[java.net.URL 0x79a18e79 file:/C:/Users/Maciek/.m2/repository/cider/cider-nrepl/0.9.0/cider-nrepl-0.9.0.jar] #object[java.net.URL 0xf0b9c92 file:/C:/Program%20Files/Java/jdk1.8.0_51/src.zip] #object[java.net.URL 0x1ea27b79 file:/C:/Program%20Files/Java/jdk1.8.0_51/lib/tools.jar]) 

正如你可以看到http-kit被加載

 #object[java.net.URL 0x337cc909 file:/C:/Users/Maciek/.m2/repository/http-kit/http-kit/2.1.19/http-kit-2.1.19.jar]

奇怪的是,它在上次系統重新啓動前工作正常。

這裏是我的project.clj

 

    ;(defproject restful-clojure "0.1.0-SNAPSHOT" 
    ; :description "FIXME: write description" 
    ; :url "http://example.com/FIXME" 
    ; :license {:name "Eclipse Public License" 
    ;   :url "http://www.eclipse.org/legal/epl-v10.html"} 
    ; :dependencies [[org.clojure/clojure "1.6.0"]]) 
    ; project.clj 
    (defproject restful-clojure "0.1.0-SNAPSHOT" 
     ; ...project settings... 

     ; The :dependencies key maps to a vector containing all dependencies 
     ; necessary for our project. The dependency on Clojure itself should 
     ; have already been added by Leiningen. We will add Ring, the Jetty 
     ; adapter (so we can start up a web server to serve our application), 
     ; and Compojure, which we will use later on in this tutorial. 
     :dependencies [[org.clojure/clojure "1.8.0"] 
        [http-kit "2.1.19"]]) 
 
+5

修復你的需求,如下所示:'(require'[org.httpkit.client:as http-kit])'(http://www.http-kit.org/client.html) – OlegTheCat

+0

謝謝,你救了我的日子 –

+0

@OlegTheCat複製此評論作爲答覆。 –

回答

0

這是不完全的問題的答案,但它是相關的,我發現這個問題,而試圖解決我的錯誤,所以我認爲這可能幫助其他人。

我得到了同樣的錯誤的OP,因爲我忘了在project.clj添加

[http-kit "2.2.0"] 

:dependencies []

OP的依賴關係正確,但在調用(require)時沒有對其進行別名。 OP的問題的實際答案是在一個評論中,至今尚未成爲答案。