저는 Clojure, leiningen 및 java 툴 체인을 처음 사용합니다 (그러나 Lisp, 함수 프로그래밍, 소프트웨어는 일반적이지 않음). Compojure에서 RESTful 웹 서비스를 부트 스트랩하려고합니다. 나는 아무 문제가 없었다 ring.middleware.json-params with compojure를 사용하려고 시도했습니다.
는 지금 점진적으로이 지금은 오래된 웹 사이트http://mmcgrana.github.com/2010/08/clojure-rest-api.html
시작 기능을 추가 에 노력하고
https://github.com/weavejester/compojure/wiki/Getting-Started
의 지침에 따라 compojure 시작하기 위의 첫 번째 링크에서 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
이 leiningen에 의해 어디에 입금 되었는가를 알아 내거나 심지어 클래스 파일을 들여다보고 그 이름이 무엇이어야했는지 알아내는 법도 찾아야한다.
이 문제에 대한 구체적인 해결책 이외에, 나는 초보자 물건에 대한 조언을 고맙게 생각할 것입니다. 어쩌면 미래에 나 자신과 같은 간단한 문제를 해결할 수있을 것입니다.
이맥스 nrepl에서 프로젝트를 컴파일 할 때 오류가 발생했습니다. 문제가있는 것처럼 보이는데, 도구 상자의 이맥스 부분에 있습니다. 한 부분은 제가보고하지 않았습니다. 'lein 링 서버'가 작동 중입니다. –
- 그래, 이맥스를 다시 시작하고'nrepl-jack-in'을 재실행하면 문제가 해결되었습니다. project.clj를 변경하는 것 같아서 project.clj 디렉토리에서'nrepl'을 다시 시작해야합니다. 말이된다. 실마리 주셔서 감사합니다! –
project.clj를 변경할 때 모든 것을 다시 시작할 필요가없는 것 같습니다. nrepl-eval-buffer는 파일을 nrepl 서버에 알려주는 버퍼입니다. – yehe