嘿,我是Clojure和Leiningen的新手,有点卡住了.我设法与莱宁根建立了一个项目.我能够将它编译成一个uberjar并运行repl
.我还设法加载一个名为aleph
运行简单并发Web服务器的依赖项.
我的下一步是使用redis-clojure
访问redis.但在这里我被困住了.这是我的project.clj
:
(defproject alpha "0.0.1-SNAPSHOT" :description "Just an alpha test script" :main alpha.core :dependencies [[org.clojure/clojure "1.2.0"] [org.clojure/clojure-contrib "1.2.0"] [aleph, "0.1.2-SNAPSHOT"] [redis-clojure "1.2.4"]])
这是我的core.clj
:请注意,我只(:requre redis)
根据redis-clojure中的示例添加了该行.
(ns alpha.core (:require redis) (:gen-class)) (use `aleph.core 'aleph.http) (defn alpha [channel request] (let [] (enqueue-and-close channel {:status 200 :header {"Content-Type" "text/html"} :body "Hello Clojure World!"})) (println (str request))) (defn -main [& args] (start-http-server alpha {:port 9292}))
当我尝试运行lein repl
时会发生这种情况:
java.io.FileNotFoundException: Could not locate redis__init.class or redis.clj on classpath: (core.clj:1)
是的,我已经运行lein deps
了,我的lib
目录中有redis-clojure jar .我可能错过了一些微不足道的东西,但我现在已经在这个问题上待了几个小时而没有接近解决方案.谢谢!
命名空间redis不存在.我想你需要
(:require [redis.core :as redis])
检查可用命名空间的方法:
(use 'clojure.contrib.find-namespaces) (filter #(.startsWith (str %) "redis") (find-namespaces-on-classpath))