无法在类路径中找到compojure

时间:2010-05-26 00:21:18

标签: clojure installation compojure

我正在尝试各种入门示例,我可以获得一个基本的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)

2 个答案:

答案 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)

我玩了一个Compojure“Hello World”并且遇到了这个问题(还有许多其他人在我脑子里混乱)。另一个复杂因素是Web上的很多Compojure文档已经过时了。最重要的是,这些是您想要遵循的步骤:

  1. 拥有Leiningen的最新版本。确保遵循github站点上的安装说明。 (通过macports;他们的Leiningen已经过时了。)

  2. 按照Compojure说明here

  3. 注意文件名不正确。应该是src / hello_www / core.clj NOT src / hello-www / core.clj。