Question

Hé, je suis nouveau à Clojure et Leiningen et un peu coincé. J'ai réussi à mettre en place un projet avec Leiningen. Je suis en mesure de le compiler dans un uberjar et exécuter le repl. J'ai aussi réussi à charger une dépendance appelée aleph pour exécuter simple concurrent serveur web.

La prochaine étape pour moi est d'utiliser redis-clojure pour Redis d'accès. Mais ici, je suis coincé. Ceci est mon 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"]])

Et voici mon core.clj: Notez que je n'ajouté la ligne (:requre redis) selon l'exemple de 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}))

Quand je tente de lancer lein repl cela se produit:

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

Oui, j'ai couru lein deps et le pot-Redis Clojure est disponible dans mon répertoire lib. Je suis probablement manque quelque chose de trivial, mais je suis à cette question pendant quelques heures maintenant et ne pas obtenir plus près d'une solution. Merci!

Était-ce utile?

La solution

Namespace Redis n'existe pas. Je suppose que vous avez besoin

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

Une façon de vérifier les espaces de noms disponibles:

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

Autres conseils

Cela fonctionne avec les versions actuelles de plus Clojure, dans cet exemple, il trouve les noms de tous les espaces de noms qui contient la sous-chaîne « jdbc »:

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

Le résultat est une séquence, dans l'exemple:

=> 
("clojure.java.jdbc")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top