Redis-Clojureを使用したLeiningenを使用する問題
質問
ねえ、私はClojureとLeiningenに慣れていて、少し立ち往生しています。 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
そして、Redis-Clojureの瓶は私で利用できます lib
ディレクトリ。私はおそらく些細なことを見逃していますが、私はこの問題に数時間、解決策に近づいていません。ありがとう!
解決
名前空間 Redis 存在しない。私はあなたが必要だと思います
(:require [redis.core :as redis])
利用可能な名前空間をチェックする方法:
(use 'clojure.contrib.find-namespaces)
(filter #(.startsWith (str %) "redis") (find-namespaces-on-classpath))
他のヒント
これは、より現在のバージョンのClojureで機能します。この例では、サブ文字列「JDBC」を含むすべての名前空間の名前を見つけます。
(map str
(filter
#(> (.indexOf (str %) "jdbc") -1)
(all-ns)))
結果は、例としてシーケンスです。
=> ("clojure.java.jdbc")
所属していません StackOverflow