Clojure 尝试将ring.middleware.json-params与compojure一起使用
我不熟悉Clojure、leiningen和java工具链(但不熟悉lisp、函数式编程和一般的软件)。我正在尝试在Compojure中引导一些RESTful web服务 我在开始使用compojure时没有遇到任何问题,而是按照Clojure 尝试将ring.middleware.json-params与compojure一起使用,clojure,leiningen,compojure,ring,Clojure,Leiningen,Compojure,Ring,我不熟悉Clojure、leiningen和java工具链(但不熟悉lisp、函数式编程和一般的软件)。我正在尝试在Compojure中引导一些RESTful web服务 我在开始使用compojure时没有遇到任何问题,而是按照 https://github.com/weavejester/compojure/wiki/Getting-Started 我现在正试图从现在已经过时的网站中逐步添加功能 http://mmcgrana.github.com/2010/08/clojure-rest
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"]]}})
现在我明白了
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)
由于我完全是工具链的noob,我不知道如何设置或检查类路径,也不知道如何找出leiningen存放的json_params
,甚至不知道如何查看类文件中的名称
除了这个问题的具体解决方案外,我还希望能有新手的指点,这样我将来也许可以自己解决类似这样的简单问题。启动服务器时,你有没有遇到这个错误?我的环境没有问题。 以下是我所做的:
lein new compojure hello
然后按您的操作更改project.clj并运行:
lein deps
最后加上:
(:use ring.middleware.json-params)
处理.clj
启动服务器,不会发生错误
我建议您构建一个新项目,然后再试一次。我在emacs nrepl中编译项目时出错了……看来问题就在工具链的emacs部分——我没有报告的部分。
lein ring server
正在工作。--是的,重新启动emacs并重新启动nrepl插孔
解决了问题m、 看起来要更改project.clj您必须从project.clj目录重新启动nrepl
。这很有意义。感谢您提供的线索!在更改project.clj时,您似乎不必重新启动所有操作。只需重新启动该文件,nrepl服务器就会知道该文件。
(:use ring.middleware.json-params)