2014-05-17 3 views
0

Je suis nouveau sur clojure et liberator.Démarrer avec liberator

J'essaie de démarrer avec liberator mais je suis bloqué sur l'erreur suivante.

Voici mon code qui démarre le serveur Web et définit les routes:

(ns game-of-life.core 
    (:require 
    [ring.util.response :as resp] 
    [compojure.route :as route] 
    [ring.adapter.jetty :as jetty]) 
    (:use 
    [ring.middleware.multipart-params :only [wrap-multipart-params]] 
    [ring.util.response :only [header]] 
    [compojure.core :only [context ANY routes defroutes]] 
    [compojure.handler :only [api]])) 

    (defn assemble-routes [] 
    (-> 
    (routes 
     (ANY "/" [] (resp/redirect "/index.html")) 

     (route/resources "/")))) 

    (def handler 
    (-> (assemble-routes)) 

    (defn start [options] 
    (jetty/run-jetty #'handler (assoc options :join? false))) 

    (defn -main 
    ([port] 
     (start {:port (Integer/parseInt port)})) 
    ([] 
     (-main "3000"))) 

Quand je lance lein ring server, je reçois un java.lang.NullPointerException avec la stacktrace suivante:

reload.clj: 18 anneau .middleware.reload/wrap-reload [fn] stacktrace.clj: 17 ring.middleware.stacktrace/wrap-pile-trace-log [fn] stacktrace.clj: 80 ring.middleware.stacktrace/wrap-piletrace-web [fn] ] jetty.clj: 18 ring.adapter.j etty/proxy-handler [fn] (Unknown Source) ring.adapter.jetty.proxy $ org.eclipse.jetty.server.handler.AbstractHandler $ 0.handle HandlerWrapper.java:116 org.eclipse.jetty.server.handler .HandlerWrapper.handle Server.java:363 org.eclipse.jetty.server.Server.handle AbstractHttpConnection.java:483 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest AbstractHttpConnection.java:920 org.eclipse.jetty. server.AbstractHttpConnection.headerComplete AbstractHttpConnection.java:982 org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.headerComplete HttpParser.java:635 org.eclipse.jetty.http.HttpParser.parseNext HttpParser.java:235 org.eclipse .jetty.http.HttpParser.parseAvailable AsyncHttpConnection.jav a: 82 org.eclipse.jetty.server.AsyncHttpConnection.handle SelectChannelEndPoint.java:628 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle SelectChannelEndPoint.java:52 org.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run QueuedThreadPool.java:608 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob QueuedThreadPool.java:543 org.eclipse.jetty.util.thread.QueuedThreadPool 3.run $ Thread.java:744 java. lang.Thread.run

Répondre

1

Je pense que cela fonctionnera mieux si votre fonction gestionnaire reçoit l'argument request.

0

Pouvez-vous essayer de changer les dépendances comme ça? Ces versions et la configuration suivante fonctionne tout à fait pour moi: (y compris le rechargement)

(defproject .......... 
:dependencies [[org.clojure/clojure "1.5.1"] 
      [liberator "0.11.0"] 
      [ring/ring-core "1.1.8"] 
      [ring/ring-jetty-adapter "1.1.8"] 
      [compojure "1.1.3"]] 
:main game-of-life.core 
:min-lein-version "2.0.0" 
:plugins [[lein-ring "0.8.10"]] 
:ring {:handler game-of-life.core/handler}) 

plus le gestionnaire doit être

(def handler 
(-> (assemble-routes)))