2010-05-26 27 views
10

Estoy tratando los diversos ejemplos comenzó a recibir y puedo conseguir un ejemplo básico hola mundo trabajando con HTML básico en la ruta como talNo se pudo localizar compojure en la ruta de clase

(ns hello-world 
    (:use compojure.core ring.adapter.jetty) 
    (:require [compojure.route :as route])) 

(defroutes example 
    (GET "/" [] "<h1>Hello World Wide Web!</h1>")) 

(run-jetty example {:port 8080}) 

Pero cuando intento utilizar el html ayudantes como así

(ns hello-world 
    (:use compojure ring.adapter.jetty) 
    (:require [compojure.route :as route])) 

(defroutes example 
    (GET "/" [] 
    (html [:h1 "Hello World"]))) 

(run-jetty example {:port 8080}) 

Entonces me sale el siguiente error

[nula] Excepción en hilo java.io.FileNotFoundException "principal": no se pudo encontrar compojure__init.cla ss o compojure.clj en classpath: (core.clj: 1)

+1

Puede ser que usted mencione (: use compojure.core ring.adapter.jetty) en su lugar (: use compojure ring.adapter.jetty)? – W55tKQbuRu28Q4xv

+0

Todavía hay muchos ejemplos en intraweb que incluyen (: use compojure). Esto parece ser pre Compojure 0.4 ejemplos como se describe a continuación. El problema anterior sigue representando personas que siguen estos ejemplos. – Xian

+0

Creo que su segundo ejemplo falta "[]". Debería ser (OBTENER "/" [] ... –

Respuesta

9

Como W55tKQbuRu28Q4xv menciona en un comentario, usa (:use compojure ...) en el segundo ejemplo. Debería cambiar al (:use compojure.core ...) y luego tal vez obtener algunas dependencias adicionales para la otra funcionalidad que usa (como hiccup (< - este es un enlace al repositorio GitHub), que ahora es un proyecto separado para la DSL que genera HTML) .

Supongo que está intentando seguir algunos tutoriales escritos para Compojure 0.3 mientras usa Compojure 0.4. Este último no incluye el espacio de nombres compojure y se ha reducido mucho, con el manejo HTTP básico delegado en ring y varias otras funciones separadas para proyectos separados (como el hiccup antes mencionado).

Afortunadamente, hay buenos recursos en la transición 0.3 -> 0.4, p. this blog entry por Brenton Ashworth. Si no puede encontrar algo que haya sido eliminado de Compojure propiamente, es probable que pueda aprender dónde encontrarlo ahora. Consulte también this follow-up discussion en el grupo de Google de Compojure para conocer la errata y detalles adicionales.

+0

Gracias Michael, esto era exactamente. Necesitaba incluir hiccup.core para obtener el funcionamiento de (html [: h1 "foo"]) – Xian

1

Jugué con una Compojure "Hello World" y tuve este problema (y muchos otros que se estaban embrollando en mi cerebro). Otra complicación es que gran parte de la documentación de Compojure en la web ya está desactualizada. En pocas palabras, estos son los pasos que desea seguir:

  1. tener una versión actualizada de Leiningen. Asegúrese de seguir las instrucciones de instalación en el sitio github. (Haga no pasan por macports; su Leiningen no está actualizado.)

  2. Siga las instrucciones Compojure here.

Nota que el nombre de archivo es incorrecto. Debe ser src/hello_www/core.clj NOT src/hello-www/core.clj.

+0

Gracias Julian, esto fue el ejemplo en el que pude trabajar. Sin embargo, es el exmaples que contenía el (html [: h1 "foo"]) que no pude. Parece que el hopping.core ahora se requiere a partir de la versión 0.4.0 de Compojure. – Xian

Cuestiones relacionadas