3

私は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によってデポジットされた場所を見つける方法、さらにはクラスファイル内を調べて名前を見つける方法さえわかりません。 。

この問題の具体的な解決策に加えて、初心者向けのポインタをいただければ幸いです。将来、このような簡単な問題を自分で解決できるかもしれません。

4

1 に答える 1

1

サーバーを起動したときにそのエラーが発生しましたか?私の環境には何も問題はありません。 ここに画像の説明を入力してください

これが私がしたことです:

lein new compojure hello

次に、project.cljを変更して実行します。

lein deps

最後に追加:

(:use ring.middleware.json-params)

handle.cljへ

サーバーを起動します。エラーは発生しません。

新しいプロジェクトを作成して、もう一度やり直すことをお勧めします。

于 2013-03-10T04:33:24.473 に答える