我是Clojure、leiningen和java工具链的新手(但不是lisp、函数式编程和一般软件)。我正在尝试在Composjure中引导一些RESTful web服务。
我很容易就开始了compjure,遵循了
https://github.com/weavejester/compojure/wiki/Getting-Started
我现在正在努力
递增地
来自现已过时的网站的加载项功能
http://mmcgrana.github.com/2010/08/clojure-rest-api.html
从工作开始
leiningen
来自上面第一个链接的项目(它通过
lein ring start
,我在project.clj中添加了一行
(defproject hello-world "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:dependencies [[org.clojure/clojure "1.4.0"]
[ring-json-params "0.1.3"] ;;; <---===/// Here's the line I added
[compojure "1.1.5"]]
:plugins [[lein-ring "0.8.2"]]
:ring {:handler hello-world.handler/app}
:profiles
{:dev {:dependencies [[ring-mock "0.1.3"]]}})
然后我重新运行
lein deps
还有一堆下载的东西。一切都很好,这个项目仍然有效。现在我添加一行到
handler.clj
:
(ns hello-world.handler
(:use compojure.core)
(:use ring.middleware.json-params) ;;; <---===/// Here's the line I added
(: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))
现在我明白了
java.io.FileNotFoundException: Could not locate ring/middleware/json_params__init.class or ring/middleware/json_params.clj on classpath:
at clojure.lang.RT.load (RT.java:432)
clojure.lang.RT.load (RT.java:400)
clojure.core$load$fn__4890.invoke (core.clj:5415)
clojure.core$load.doInvoke (core.clj:5414)
由于我完全不了解工具链,我不知道如何设置或检查类路径,也不知道在哪里
json_params
是由莱宁根存放的,甚至是如何查看类文件内部以找出该名称。
除了这个问题的具体解决方案外,我还希望能为新手提供一些建议,这样我将来就可以自己解决这样简单的问题了。