2012-12-06 2 views
5

나는 자바 1.7.0_09에Clojure Noir 웹 응용 프로그램 용 war 파일을 작성하는 방법은 무엇입니까?

https://github.com/ibdknox/lein-noir

lein new noir my-project-name 
lein run 

(나는 Leiningen 사용하고 2.0.0-preview10를 생성하기 위해 다음 명령을 사용하여이 웹 사이트에 instrcution에서 샘플 웹 응용 프로그램을 실행 할 수 있었다 Java HotSpot (TM) 클라이언트 VM)

시작 웹 응용 프로그램은 정상적으로 실행되지만 응용 프로그램 서버 (Websphere)에 수동으로 배포 할 수있는 war 파일을 생성하려고합니다.

Noir 프로젝트의 war 파일을 생성하기 위해 Leingen 2에 필요한 명령 또는 구성은 무엇입니까? 이 명령은 "새로운 누아르 webpoc2을 lein"명확히하기 위해

내가 CL 파일

:ring { 
        :handler webpoc1.server/handler 

} 

에 링을 추가하는 경우이 가진 느와르 프로젝트

(defproject webpoc1 "0.1.0-SNAPSHOT" 
      :description "FIXME: write this!" 
      :dependencies [[org.clojure/clojure "1.4.0"] 
          [noir "1.3.0-beta3"]] 
      :main webpoc1.server) 

파일 .clj 생성하고, lein을 실행 내가 누아 (와 Clojure의) 새로운 오전부터

Exception in thread "main" java.lang.RuntimeException: No such var: webpoc1.server/handler, compiling:(
/servlet.clj:1) 
     at clojure.lang.Compiler.analyze(Compiler.java:6281) 
     at clojure.lang.Compiler.analyze(Compiler.java:6223) 
     at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3497) 
     at clojure.lang.Compiler.analyzeSeq(Compiler.java:6457) 
     at clojure.lang.Compiler.analyze(Compiler.java:6262) 
     at clojure.lang.Compiler.analyze(Compiler.java:6223) 
     at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5618) 
     at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5054) 
     at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3674) 
     at clojure.lang.Compiler.analyzeSeq(Compiler.java:6453) 
     at clojure.lang.Compiler.analyze(Compiler.java:6262) 
     at clojure.lang.Compiler.analyzeSeq(Compiler.java:6443) 
     at clojure.lang.Compiler.analyze(Compiler.java:6262) 
     at clojure.lang.Compiler.analyze(Compiler.java:6223) 
     at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3548) 
     at clojure.lang.Compiler.analyzeSeq(Compiler.java:6457) 
     at clojure.lang.Compiler.analyze(Compiler.java:6262) 
     at clojure.lang.Compiler.analyze(Compiler.java:6223) 
     at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3497) 
     at clojure.lang.Compiler.analyzeSeq(Compiler.java:6457) 
     at clojure.lang.Compiler.analyze(Compiler.java:6262) 
     at clojure.lang.Compiler.analyze(Compiler.java:6223) 
     at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5618) 
     at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5054) 
     at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3674) 
     at clojure.lang.Compiler.analyzeSeq(Compiler.java:6453) 
     at clojure.lang.Compiler.analyze(Compiler.java:6262) 
     at clojure.lang.Compiler.analyzeSeq(Compiler.java:6443) 
     at clojure.lang.Compiler.analyze(Compiler.java:6262) 
     at clojure.lang.Compiler.access$100(Compiler.java:37) 
     at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:518) 
     at clojure.lang.Compiler.analyzeSeq(Compiler.java:6455) 
     at clojure.lang.Compiler.analyze(Compiler.java:6262) 
     at clojure.lang.Compiler.analyze(Compiler.java:6223) 
     at clojure.lang.Compiler.compile1(Compiler.java:7030) 
     at clojure.lang.Compiler.compile1(Compiler.java:7025) 
     at clojure.lang.Compiler.compile(Compiler.java:7097) 
     at clojure.lang.RT.compile(RT.java:387) 
     at clojure.lang.RT.load(RT.java:427) 
     at clojure.lang.RT.load(RT.java:400) 
     at clojure.core$load$fn__4890.invoke(core.clj:5415) 
     at clojure.core$load.doInvoke(core.clj:5414) 
     at clojure.lang.RestFn.invoke(RestFn.java:408) 
     at clojure.core$load_one.invoke(core.clj:5227) 
     at clojure.core$compile$fn__4895.invoke(core.clj:5426) 
     at clojure.core$compile.invoke(core.clj:5425) 
     at user$eval3.invoke(NO_SOURCE_FILE:1) 
     at clojure.lang.Compiler.eval(Compiler.java:6511) 
     at clojure.lang.Compiler.eval(Compiler.java:6500) 
     at clojure.lang.Compiler.eval(Compiler.java:6501) 
     at clojure.lang.Compiler.eval(Compiler.java:6477) 
     at clojure.core$eval.invoke(core.clj:2797) 
     at clojure.main$eval_opt.invoke(main.clj:297) 
     at clojure.main$initialize.invoke(main.clj:316) 
     at clojure.main$null_opt.invoke(main.clj:349) 
     at clojure.main$main.doInvoke(main.clj:427) 
     at clojure.lang.RestFn.invoke(RestFn.java:421) 
     at clojure.lang.Var.invoke(Var.java:419) 
     at clojure.lang.AFn.applyToHelper(AFn.java:163) 
     at clojure.lang.Var.applyTo(Var.java:532) 
     at clojure.main.main(main.java:37) 
Caused by: java.lang.RuntimeException: No such var: webpoc1.server/handler 
     at clojure.lang.Util.runtimeException(Util.java:170) 
     at clojure.lang.Compiler.resolveIn(Compiler.java:6740) 
     at clojure.lang.Compiler.resolve(Compiler.java:6710) 
     at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6671) 
     at clojure.lang.Compiler.analyze(Compiler.java:6244) 
     ... 60 more 
Subprocess failed 

, 나는으로 나뉘어진다하려고 딱하다 : 링 uberwar,이 얻을 e this out

답변

3

내 질문에 답하기/내 고환을 문서화 leingen noir 링 의존성 다른 초보자를위한. "lein new noir ..."명령으로 noir 프로젝트를 생성 할 수 있지만 war 파일을 원한다면 다음과 같이이 파일을 업데이트하십시오.

(ns noir3.server 
    (:require [noir.server :as server])) 

;;(server/load-views-ns 'noir3.views) 

(server/load-views "src/noir3/views/") 


(def handler (server/gen-handler {:mode :dev 
            :ns 'noir3})) 

(defn -main [& m] 
    (let [mode (keyword (or (first m) :dev)) 
     port (Integer. (get (System/getenv) "PORT" "8080"))] 
    (server/start port {:mode mode 
         :ns 'noir3}))) 

그런

project.clj

(defproject noir3 "0.1.0-SNAPSHOT" 
      :description "FIXME: write this!" 
      :dependencies [[org.clojure/clojure "1.4.0"] 
          [noir "1.3.0-beta10"] 
          [hiccup "1.0.2"] 
          [cheshire "4.0.3"] 
          ] 
      :plugins [[lein-ring "0.7.5"]] 
      :ring {:handler noir3.server/handler}    

      :main noir3.server) 

server.clj, 다음

  1. "lein 실행"페이지가 액세스 할 수있는 경우 (확인을 실행),
  2. "lein 링 서버"(페이지가 액세스 할 수있는 경우 확인),
  3. 그리고 마지막으로 "lein 반지 전쟁"- 당신이 대상 디렉토리에 war 파일로 볼 수
2

당신이 참조하고있는 webpoc1.serverhandler을 선언 했습니까? 이런 식으로 뭔가 :

(def handler 
    (server/gen-handler {:mode :prod 
         :ns *ns*})) 

http://www.webnoir.org/tutorials/others/가 링에 노아을 사용하는 방법에 대한 지침을 제공합니다.

+0

문제는의 충돌 버전에 대해이었다 jar 파일 의존성. noir "1.3.0-beta3"jar 파일에는 lein-ring과 호환되지 않는 이전 버전의 hicup이 포함되어 있습니다. – user193116