2012-12-06 12 views
5

byłem w stanie wykorzystać te polecenia do generowania i uruchomić aplikację internetową próbki z instrcution na tej stronie internetowejJak zbudować plik wojenny dla aplikacji Clojure Noir?

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

lein new noir my-project-name 
lein run 

(używam Leiningen 2.0.0-preview10 na Java 1.7.0_09 Klient wirtualny Java HotSpot (TM)

Uruchomiona aplikacja internetowa działa poprawnie, ale chcę wygenerować plik wojny, który mogę ręcznie wdrożyć na moim serwerze aplikacji (Websphere).

Jakie polecenie lub konfiguracja dla Leingen 2 jest potrzebne do wygenerowania pliku wojny dla projektu Noir?

Aby wyjaśnić to polecenie "Lein nowy noir webpoc2" wygenerować projekt noir z tego .clj złożyć

(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) 

Jeśli dodać do pliku Pierścień cl

:ring { 
        :handler webpoc1.server/handler 

} 

i uruchom Lein ring uberwar, otrzymuję to:

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 

Odkąd jestem nowy w Noir (i Clojure), nie udaje mi się usiąść To wydarzenie

Odpowiedz

3

Odpowiedzi na moje pytanie/dokumentowanie moich prac w Leingen Noir zależności pierścienia dla innych początkujących. Możesz wygenerować projekt noir z poleceniem "lein new noir ...", ale zaktualizuj te pliki w następujący sposób, jeśli chcesz plik wojenny.

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

(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}))) 

Następnie uruchom następujące

  1. "run Lein" (sprawdź, czy strony są dostępne),
  2. „serwer pierścień Lein” (sprawdź, czy strony są dostępne),
  3. i wreszcie „Lein pierścień war” - powinien być widoczny jako plik wojny w docelowej reż
2

Czy zadeklarowałeś handler w webpoc1.server, do której się odwołujesz? Coś takiego:

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

http://www.webnoir.org/tutorials/others/ oferuje instrukcje dotyczące korzystania z Noir Pierścienia.

+0

Kwestia ta była o sprzecznych wersjach zależność od pliku JAR. noir "plik jar" 1.3.0-beta3 "zawiera starszą wersję hicup niekompatybilną z lein-ringiem – user193116

Powiązane problemy