Frage

Hallo, ich bin neu in Clojure und Leiningen und ein bisschen stecken. Ich habe die Einrichtung eines Projektes mit Leiningen verwaltet. Ich bin in der Lage es zu einem uberjar kompilieren und ausführen, um die repl. Ich habe auch laden eine Abhängigkeit namens aleph verwalten ein einfaches gleichzeitigen Webserver ausgeführt werden.

Der nächste Schritt für mich ist redis-clojure den Zugriff redis zu verwenden. Aber hier bin ich stecken. Das ist mein 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"]])

Und hier ist mein core.clj: Beachten Sie, dass ich nur die Linie (:requre redis) gemäß dem Beispiel von redis-clojure hinzugefügt

.
(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}))

Wenn ich versuche, lein repl auszuführen dies geschieht:

java.io.FileNotFoundException: Could not locate redis__init.class or redis.clj on classpath:  (core.clj:1)

Ja, ich habe laufen lein deps und das redis-clojure Glas ist in meinem lib Verzeichnis zur Verfügung. Ich fehle wahrscheinlich etwas trivial, aber ich habe jetzt ein paar Stunden zu diesem Thema gewesen und nicht näher an eine Lösung zu bekommen. Dank!

War es hilfreich?

Lösung

Namespace redis gibt es nicht. Ich nehme an, Sie brauchen

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

Eine Art und Weise zur Verfügung Namensraum zu überprüfen:

(use 'clojure.contrib.find-namespaces)
(filter #(.startsWith (str %) "redis") (find-namespaces-on-classpath))

Andere Tipps

Dies funktioniert mit mehr aktuellen Versionen von Clojure, in diesem Beispiel findet es die Namen aller Namensräume, die die Unter Zeichenfolge „jdbc“ enthalten:

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

Das Ergebnis ist eine Sequenz, in Beispiel:

=> 
("clojure.java.jdbc")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top