2010-05-26 24 views
10

sto provando le varie Come esempi iniziate e posso ottenere un esempio di base ciao mondo a lavorare con HTML di base nel percorso come taleImpossibile localizzare compojure nel classpath

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

Ma quando tento di usare il codice HTML aiutanti come così

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

Poi ho il seguente errore

[null] Exception in thread java.io.FileNotFoundException "principale": Impossibile trovare compojure__init.cla ss o compojure.clj su classpath: (core.clj: 1)

+1

Puoi menzionare (: usa compojure.core ring.adapter.jetty) invece (: usa compojure ring.adapter.jetty)? – W55tKQbuRu28Q4xv

+0

Ci sono ancora molti esempi nell'intraweb che includono (: use compojure). Questo sembra essere pre-Compojure 0.4 esempi come descritto di seguito. Il problema sopra indica ancora le persone che seguono ancora questi esempi. – Xian

+0

Penso che il tuo secondo esempio manchi "[]". Dovrebbe essere (GET "/" [] ... –

risposta

9

Come menziona W55tKQbuRu28Q4xv in un commento, si utilizza (:use compojure ...) nel secondo esempio. Dovresti passare a (:use compojure.core ...) e poi magari aggiungere alcune dipendenze aggiuntive per l'altra funzionalità che usi (come hiccup (< - questo è un collegamento al repository GitHub), che ora è un progetto separato, per la costruzione di codice HTML DSL) .

La mia ipotesi è che si stia cercando di seguire alcuni tutorial scritti per Compojure 0.3 durante l'uso di Compojure 0.4. Quest'ultimo non include affatto lo spazio dei nomi compojure ed è stato ridotto molto, con la gestione HTTP di base delegata a ring e varie altre funzionalità scorporate per separare i progetti (come il già citato hiccup).

Fortunatamente ci sono buone risorse sulla transizione 0.3 -> 0.4, ad es. this blog entry di Brenton Ashworth. Se non riesci a trovare qualcosa che è stato rimosso da Compojure corretto, è probabile che sarai in grado di imparare dove trovarlo ora. Vedi anche this follow-up discussion sul gruppo Google di Compojure per errata e dettagli aggiuntivi.

+0

Grazie Michael, era esattamente questo: dovevo includere hiccup.core per far funzionare il materiale (html [: h1 "foo"]. – Xian

1

Ho suonato in giro con un "Hello World" Compojure e ho avuto questo problema (così come molti altri che mi stanno confondendo nel cervello). Un'altra complicazione è che molta della documentazione Compojure sul web è già obsoleta. Linea di fondo, questi sono i passaggi da seguire:

  1. possiede una versione up-to-date di Leiningen. Assicurati di seguire le istruzioni di installazione sul sito github. (Do non passare attraverso MacPorts, la loro Leiningen non è aggiornato.)

  2. istruzioni Seguire Compojure here.

Nota che il nome del file non è corretto. Dovrebbe essere src/hello_www/core.clj NON src/hello-www/core.clj.

+0

Grazie Julian, questo è stato l'esempio che ho potuto ottenere, ma sono gli exmaples che contenevano il file (html [: h1 "foo"]) che non potevo.Esso sembra che hiccup.core sia ora richiesto dalla versione 0.4.0 di Compojure. – Xian

Problemi correlati