使用Leinengen和Clojure在REPL中试用新库的最快方法
新的clojure开发人员正在尝试在REPL中使用 我在leinengen创建了一个新项目,使用Leinengen和Clojure在REPL中试用新库的最快方法,clojure,Clojure,新的clojure开发人员正在尝试在REPL中使用 我在leinengen创建了一个新项目,lein new app kit expt 然后我修改了project.clj中的:dependencies块,以包括[http kit“2.2.0”] 然后我运行leindeps,然后运行leinrepl 在REPL中,我尝试运行(:require[org.httpkit.client:as http]) 然而,当我运行这个程序时,我得到了错误 CompilerException java.lang.C
lein new app kit expt
然后我修改了project.clj中的:dependencies块,以包括[http kit“2.2.0”]
然后我运行leindeps
,然后运行leinrepl
在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)
我做错了什么?您使用的
:require
表单无效,关键字仅用于ns
(命名空间)表单。尝试删除:
,只需使用REPL中常用的(require…
)即可。请参阅更多require
示例
您引用的HTTP客户端文档假定您在使用的源文件中。您的环境中似乎有问题。如果我运行它(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] ))
事实上,我建议最快的方法根本不涉及
lein new
。请参阅。一旦安装到~/.lein/profiles.clj
,lein尝试http kit 2.2.0
->工作REPL。如果可以选择使用它来代替Leiningen,您只需使用命令boot-d http kit:2.2.0 REPL
。