私はClojure、leiningen、およびjavaツールチェーンに不慣れです(ただし、lisp、関数型プログラミング、ソフトウェア一般には不慣れです)。CompojureでいくつかのRESTfulWebサービスをブートストラップしようとしています。
の指示に従って、compojureを使い始めるのに問題はありませんでした。
https://github.com/weavejester/compojure/wiki/Getting-Started
現在、古くなったWebサイトから機能を段階的に追加しようとしています。
http://mmcgrana.github.com/2010/08/clojure-rest-api.html
leiningen
上記の最初のリンクから作業中のプロジェクトから始めます(これは経由で機能しlein ring start
、project.cljに1行追加します
(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
し、たくさんのものをダウンロードします。プロジェクトはまだ機能しています。今私は1行を追加し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
、leiningenによってデポジットされた場所を見つける方法、さらにはクラスファイル内を調べて名前を見つける方法さえわかりません。 。
この問題の具体的な解決策に加えて、初心者向けのポインタをいただければ幸いです。将来、このような簡単な問題を自分で解決できるかもしれません。