2013-03-10 3 views
3

저는 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에 의해 어디에 입금 되었는가를 알아 내거나 심지어 클래스 파일을 들여다보고 그 이름이 무엇이어야했는지 알아내는 법도 찾아야한다.

이 문제에 대한 구체적인 해결책 이외에, 나는 초보자 물건에 대한 조언을 고맙게 생각할 것입니다. 어쩌면 미래에 나 자신과 같은 간단한 문제를 해결할 수있을 것입니다.

답변

1

서버를 시작할 때 오류가 발생 했습니까? 내 환경에 아무런 문제가 없습니다. 여기 enter image description here

내가 무슨 짓입니다 :

lein new compojure hello 

그런 다음처럼 project.clj 변경하고 실행

lein deps 

를 마지막으로 추가시 :

(:use ring.middleware.json-params) 

하여 처리 할 수 .clj

서버 시작, 오류가 발생하지 않습니다.

새 프로젝트를 작성하고 다시 시도해보십시오.

+0

이맥스 nrepl에서 프로젝트를 컴파일 할 때 오류가 발생했습니다. 문제가있는 것처럼 보이는데, 도구 상자의 이맥스 부분에 있습니다. 한 부분은 제가보고하지 않았습니다. 'lein 링 서버'가 작동 중입니다. –

+0

- 그래, 이맥스를 다시 시작하고'nrepl-jack-in'을 재실행하면 문제가 해결되었습니다. project.clj를 변경하는 것 같아서 project.clj 디렉토리에서'nrepl'을 다시 시작해야합니다. 말이된다. 실마리 주셔서 감사합니다! –

+1

project.clj를 변경할 때 모든 것을 다시 시작할 필요가없는 것 같습니다. nrepl-eval-buffer는 파일을 nrepl 서버에 알려주는 버퍼입니다. – yehe