4

ねえ、私はClojureとLeiningenに不慣れで、少し立ち往生しています。Leiningenでプロジェクトを立ち上げることができました。それをuberjarにコンパイルして、を実行することができますreplalephまた、単純な同時Webサーバーを実行するために名前が付けられた依存関係をロードすることもできました。

私にとっての次のステップは、redis-clojureredisにアクセスするために使用することです。しかし、ここで私は立ち往生しています。これは私の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"]])

そして、これが私の: redis-clojureの例に従ってcore.clj行を追加しただけであることに注意してください。(:requre redis)

(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-clojurejarは私のlibディレクトリで利用できます。私はおそらく些細なことを見逃していますが、私はこの問題に数時間取り組んでおり、解決策に近づくことはできません。ありがとう!

4

2 に答える 2

8

名前空間redisは存在しません。私はあなたが必要だと思います

(:require [redis.core :as redis])

使用可能な名前空間を確認する方法:

(use 'clojure.contrib.find-namespaces)
(filter #(.startsWith (str %) "redis") (find-namespaces-on-classpath))
于 2010-11-02T17:17:08.473 に答える
1

これは、Clojureの最新バージョンで機能します。この例では、サブ文字列「jdbc」を含むすべての名前空間の名前を検索します。

(map str
  (filter
    #(> (.indexOf (str %) "jdbc") -1)
    (all-ns)))

結果は次のようなシーケンスになります。

=>
("clojure.java.jdbc")
于 2012-06-14T11:52:44.210 に答える