2013-04-08 2 views
2

Я только начинаю с clojure, и я пытаюсь создать небольшое веб-приложение. Я хотел попробовать икоту, но, похоже, она не работает. Мой код ниже.Hiccup не работает: FileNotFoundException: Не удалось найти ../as__init.class или ../as.clj на пути к классам

Project.clj

(defproject WebTest "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :dependencies [[org.clojure/clojure "1.4.0"] 
       [compojure "1.1.5"] 
       [hiccup "1.0.3"] 
       [org.clojure/java.jdbc "0.2.3"] 
       [net.sourceforge.jtds/jtds "1.2.4"] 
       ] 
    :plugins [[lein-ring "0.8.2"] 
      [lein-idea "1.0.1"]] 
    :ring {:handler WebTest.handler/app} 
    :profiles 
    {:dev {:dependencies [[ring-mock "0.1.3"]]}}) 

handler.clj

(ns WebTest.handler 
    (:use compojure.core) 
    (:require [compojure.handler :as handler] 
      [compojure.route :as route] 
      [WebTest.Content :as pages] 
      [hiccup.core :as templ])) 

(defroutes app-routes 
    (GET "/" [] (templ/html [h1 "Hello world"])) 
    (GET "/Greeting/:name" [name] (str "<h1>Hello " name "</h1>")) 
    (GET "/Date/:year/:month/:day" [year month day] (str "<h1>It is " month "/" day "/" year "</h1>")) 
    (route/not-found "Not Found")) 

(def app 
    (handler/site app-routes)) 

И ошибка, которую я получаю

Exception in thread "main" java.io.FileNotFoundException: Could not locate hiccu 
p/core/as__init.class or hiccup/core/as.clj on classpath: 
     at clojure.lang.RT.load(RT.java:432) 
     at clojure.lang.RT.load(RT.java:400) 
     at clojure.core$load$fn__4890.invoke(core.clj:5415) 
     at clojure.core$load.doInvoke(core.clj:5414) 

очень длинный стек трассировки следует, что. Любое понимание того, что я делаю неправильно?

ответ

3

Попытка требовать WebTest.Content, как вы не может для меня, хотя остальное работает отлично, если удалить, что один:

(ns WebTest.handler 
    (:use compojure.core) 
    (:require [compojure.handler :as handler] 
      [compojure.route :as route] 
      ;[WebTest.Content :as pages] 
      [hiccup.core :as templ])) 

Погрешность вы упоминаете было бы в случае, если там, где несовпадающие [] s в the: require section ofhandler.clj's ns, хотя они не вызваны им, как вы его показываете.

+0

Это была ссылка на другой файл, который фактически не использовался. Я удалил его, и я все равно получаю ту же ошибку. –

+2

Я должен согласиться с Артуром, Clojure пытается найти «как» файл в пространстве имен hiccup.core. Это заставило бы меня подумать, что перед ключевым словом отсутствует «:». – Mike

+0

Хорошо, я переместил его снизу вверх и начал работать. А потом опустился на дно, и он все еще работал. Не знаю, почему это помогло :( –