【问题标题】:Fastest way to try out a new library in a REPL using Leinengen with Clojure使用 Leinengen 和 Clojure 在 REPL 中试用新库的最快方法
【发布时间】:2017-03-14 22:23:00
【问题描述】:

新的 clojure 开发人员正在尝试在 REPL 中使用 HTTP kit clojure library

我在 leinengen 创建了一个新项目,lein new app kit-expt

然后我修改了 project.clj 中的 :dependencies 块以包含[http-kit "2.2.0"]

然后我运行lein deps,然后运行lein repl

在 REPL 中,我尝试运行 (:require [org.httpkit.client :as http])

但是,当我运行它时,我得到了错误

CompilerException java.lang.ClassNotFoundException: org.httpkit.client, compiling:(/private/var/folders/cs/b0kcg6fx0335crbvn6xtgq7xl5c29j/T/form-init7575648818353088270.clj:1:1) 

我做错了什么?

【问题讨论】:

  • 我实际上建议最快的方式根本不涉及lein new。见lein-try。一旦安装在你的~/.lein/profiles.cljlein try http-kit 2.2.0 -> 工作 REPL。
  • 如果可以选择使用Boot而不是Leiningen,您可以简单地使用命令boot -d http-kit:2.2.0 repl

标签: clojure


【解决方案1】:

您使用的:require 表单无效,这是一个仅用于ns(命名空间)表单的关键字。尝试删除:,只使用REPL 中常用的(require ...。查看更多require 示例here

您参考的 HTTP 客户端文档假设您在使用 ns 的源文件中。

【讨论】:

    【解决方案2】:

    您的环境似乎有问题。如果我运行它(Ubuntu 16.04),效果很好:

    (require '[org.httpkit.client :as http])
    (pr-str (clojure.core/deref (http/get "http://google.com")))) 
    
       => "{:opts {:method :get, :url \"http://www.google.com/\", :query-params nil, :form-params nil, :trace-re".....
    

    更新

    正如 Micah 指出的,在 repl 中,您需要上述形式的 require。请注意,它没有前导冒号,并且在左方括号之前有一个单引号。它还必须在括号内而不是方括号内。

    ns 形式(我更喜欢)中,一切都有相反的约定:

    (ns tst.clj.core
      (:use clj.core clojure.test tupelo.test)
      (:require
        [tupelo.core :as t]
        [org.httpkit.client :as http]  ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 2013-10-04
      • 1970-01-01
      • 2013-12-12
      • 2012-08-31
      • 2022-01-11
      • 2014-02-13
      相关资源
      最近更新 更多