如何在Clojure中使用Ring运行Jetty示例

Dav*_*ams 5 jetty clojure ring leiningen

我正在跟随这个例子,使用ring和jetty在Clojure中创建一个简单的Web服务.

我在我的project.clj中有这个:

(defproject ws-example "0.0.1"
  :description "REST datastore interface."
  :dependencies
    [[org.clojure/clojure "1.5.1"]
     [ring/ring-jetty-adapter "0.2.5"]
     [ring-json-params "0.1.0"]
     [compojure "0.4.0"]
     [clj-json "0.5.3"]]
   :dev-dependencies
     [[lein-run "1.0.0-SNAPSHOT"]])
Run Code Online (Sandbox Code Playgroud)

这在脚本/ run.clj中

(use 'ring.adapter.jetty)
(require '[ws-example.web :as web])

(run-jetty #'web/app {:port 8080})
Run Code Online (Sandbox Code Playgroud)

这在src/ws_example/web.clj中

(ns ws-example.web
  (:use compojure.core)
  (:use ring.middleware.json-params)
  (:require [clj-json.core :as json]))

(defn json-response [data & [status]]
  {:status (or status 200)
   :headers {"Content-Type" "application/json"}
   :body (json/generate-string data)})

(defroutes handler
  (GET "/" []
    (json-response {"hello" "world"}))

  (PUT "/" [name]
    (json-response {"hello" name})))

(def app
  (-> handler
    wrap-json-params))
Run Code Online (Sandbox Code Playgroud)

但是,当我执行时:

lein run script/run.clj
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

No :main namespace specified in project.clj.
Run Code Online (Sandbox Code Playgroud)

为什么我得到这个,我该如何解决?

Mic*_*elB 2

你必须把这些(run-jetty)东西放到某个-main地方,然后将其添加到project.clj类似的地方

:main ws-example.core)
Run Code Online (Sandbox Code Playgroud)