我正在尝试用Compojure编写我的第一个Web应用程序。我正在使用CCW,我使用“文件-新建项目,Clojure项目”并使用“compojure” Leiningen模板。最终生成的project.clj看起来像:
(defproject asdf "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:dependencies [[org.clojure/clojure "1.4.0"]
[compojure "1.1.5"]]
:plugins [[lein-ring "0.8.2"]]
:ring {:handler asdf.handler/app}
:profiles
{:dev {:dependencies [[ring-mock "0.1.3"]]}})
src/asdf/handler.clj看起来像这样:
(ns asdf.handler
(:use compojure.core)
(:require [compojure.handler :as handler]
[compojure.route :as route]))
(defroutes app-routes
(GET "/" [] "Hello World")
(route/not-found "Not Found"))
(def app
(handler/site app-routes))
我发现我可以使用命令行运行
lein ring server
,但是我不知道如何在eclipse中运行它。当然,我希望不仅能够运行它,还能够调试它并设置断点等等。有没有办法在eclipse中做到这一点?如果不行,IntelliJ/La-Clojure呢?(我有点害怕emacs,但如果它非常简单,我会尝试的。)或者,这不是compojure应用程序的典型开发过程吗?(如果不是,那是什么?只是运行
lein ring server
然后祈祷吗?)如果这在Win7上有所区别,请告诉我。
(app)
时,我得到了ArityException
错误,提示传递给cookies$wrap-cookies$fn
的参数数量不正确(应为0),位于clojure.lang.AFn.throwArity (AFn.java:437)
。 - lobsterismapp
只是主处理程序,它不是服务器。您需要创建一个启动服务器的函数,类似于(defn start [] (run-jetty #'app {:join? false}))
,并且不要忘记在您的命名空间中添加一个require:(:require [ring.adapter.jetty :only [run-jetty]])
。因此,您必须调用(start)
而不是(app)
。 - Laurent PetitCould not locate ring/adapter/jetty__init.class or ring/adapter/jetty.clj on classpath
的错误,但后来我在 Compojure 的 wiki 上找到了这个链接,并按照第二部分解决了它:https://github.com/ring-clojure/ring/wiki/Interactive-Development。 - lobsterism