我正在尝试各种入门示例,我可以获得一个基本的hello world示例,在路径中使用基本HTML
(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})
但是当我尝试使用像这样的html助手时
(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})
然后我收到以下错误
[null]线程“main”中的异常java.io.FileNotFoundException:找不到类路径上的compojure__init.class或compojure.clj:(core.clj:1)
答案 0 :(得分:9)
在评论中提及W55tKQbuRu28Q4xv时,在第二个示例中使用(:use compojure ...)
。你应该切换到(:use compojure.core ...)
然后为你使用的其他功能引入一些额外的依赖项(比如hiccup
(&lt; - 这是一个指向GitHub仓库的链接),现在它是一个独立的项目,用于HTML构建DSL)。
我的猜测是你在尝试使用Compojure 0.4时使用为Compojure 0.3编写的一些教程。后者根本不包括compojure
命名空间,并且已经过多了,基本的HTTP处理委托给ring
,各种其他功能分离到单独的项目(如前面提到的{ {1}})。
幸运的是,0.3 - &gt;上有很好的资源。 0.4过渡,例如布伦顿阿什沃思this blog entry。如果你找不到那些已经从Compojure中删除的东西,你很可能会从那里学到如何找到它。有关勘误表和其他详细信息,请参阅Compojure Google小组中的this follow-up discussion。
答案 1 :(得分:1)