【问题标题】:Cannot load http-kit library in clojure无法在 clojure 中加载 http-kit 库
【发布时间】:2016-07-13 07:52:07
【问题描述】:

我正在逆时针处理 Eclipse 中的窗口。当我运行这段代码时:

(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:无法在类路径上找到 http_kit__init.class 或 http_kit.clj。请检查带有破折号的命名空间是否在 Clojure 文件名中使用下划线。,编译:(restful_clojure\test.clj:1:1)

所以,接下来我运行:



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

之后我得到:

(#object[java.net.URL 0x50b65482 文件:/E:/workspace/restful-clojure/test/] #object[java.net.URL 0x5f5d7651 文件:/E:/workspace/restful-clojure/src/] #对象[java.net.URL 0x2878624e 文件:/E:/workspace/restful-clojure/dev-resources] #object[java.net.URL 0xe56e16d 文件:/E:/workspace/restful-clojure/resources/] #object [java.net.URL 0x6c26a661 文件:/E:/workspace/restful-clojure/target/classes/] #object[java.net.URL 0x58fdaa4a 文件:/C:/Users/Maciek/.m2/repository/clojure-完成/clojure-complete/0.2.3/clojure-complete-0.2.3.jar] #object[java.net.URL 0x337cc909 文件:/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 文件:/C:/Users/Maciek/.m2/repository/ccw/ccw.server/0.2.0/ccw.server-0.2.0。 jar] #object[java.net.URL 0x664eeec4 文件:/C:/Users/Maciek/.m2/repository/org/clojure/tools.nrepl/0.2.10/tools.nrepl-0.2.10.jar] #object [java.net.URL 0x33af4785 文件:/C:/Users/Maciek/.m2/repository/org/tcrawley/dynapath/0.2.3/dynapath-0.2.3.jar] #object[java.net.URL 0x79a18e79 文件:/C:/Users/ Maciek/.m2/repository/cider/cider-nrepl/0.9.0/cider-nrepl-0.9.0.jar] #object[java.net.URL 0xf0b9c92 文件:/C:/Program%20Files/Java/jdk1。 8.0_51/src.zip] #object[java.net.URL 0x1ea27b79 文件:/C:/Program%20Files/Java/jdk1.8.0_51/lib/tools.jar])

如您所见,http-kit 已加载

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

奇怪的是在上次系统重启之前它运行良好。

这是我的项目.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"]])

【问题讨论】:

  • 修复您的要求如下:(require '[org.httpkit.client :as http-kit]) (http-kit.org/client.html)
  • 谢谢你,你拯救了我的一天
  • @OlegTheCat 复制此评论作为答案。

标签: java clojure http-kit


【解决方案1】:

这不完全是问题的答案,但它是相关的,我在尝试解决我的错误时发现了这个问题,所以我认为这可能对其他人有所帮助。

我得到了和 OP 一样的错误,因为我忘了添加

[http-kit "2.2.0"]

在 project.clj 中的 :dependencies [] 内。

OP 的依赖行正确,但在调用 (require) 时没有对其进行别名化。 OP 问题的实际答案在评论中,到目前为止还没有变成答案。

【讨论】:

    猜你喜欢
    • 2012-09-13
    • 2014-03-30
    • 2010-10-20
    • 2014-09-21
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多