我正在尝试各种入门示例,我可以获得一个在路线中使用基本HTML的基本hello world示例,如下所示
(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})然后我得到了下面的错误
线程"main“java.io.FileNotFoundException中出现空异常:在类路径上找不到compojure__init.class或compojure.clj:(core.clj:1)
发布于 2010-05-26 14:22:37
正如W55tKQbuRu28Q4xv在评论中提到的,在第二个示例中使用(:use compojure ...)。您应该切换到(:use compojure.core ...),然后可能为您使用的其他功能(如hiccup (<- this is a link to the GitHub repo) )添加一些额外的依赖项,这现在是一个独立的项目,用于构建HTML的DSL)。
我的猜测是,在使用Compojure 0.4时,您正在尝试遵循为Compojure 0.3编写的一些教程。后者根本不包括compojure名称空间,并且已经精简了很多,将基本的HTTP处理委托给ring,并将其他各种功能分拆给不同的项目(如前面提到的hiccup)。
幸运的是,有关于0.3 -> 0.4过渡的很好的参考资料,例如Brenton Ashworth的this blog entry。如果你找不到已经从Compojure中删除的东西,你很有可能现在就能知道在哪里找到它。有关勘误表和其他详细信息,请参阅this follow-up discussion on Compojure的Google group。
发布于 2010-05-27 02:00:05
我玩了一个Compojure "Hello World“,遇到了这个问题(以及其他许多在我脑海中变得混乱的问题)。另一个复杂的问题是web上的许多Compojure文档已经过时了。归根结底,以下是你想要遵循的步骤:
请注意,文件名不正确。它应该是src/hello_www/core.clj,而不是src/hello-www/core.clj。
https://stackoverflow.com/questions/2909419
复制相似问题