2017-01-04 2 views
0

Carmine uberjar 컴파일 (lein with-profile embed uberjar)에 문제가 있습니다. 어쩌면 대답은 매우 쉽지만 다른 포럼에서는 도움을 얻지 못했습니다. 린 링 서버 - 헤드리스 8080이 올바르게 작동합니다. 이 명령을 lein with-profile embed uberjar 명령을 실행하면이 오류 메시지가 나타납니다. 도와 주시겠습니까? 올바른 설정은 무엇입니까? 사전에Clojure - Redis/Carmine에서 컴파일

감사합니다, RRR

(defproject fu "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :min-lein-version "2.0.0" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[org.clojure/clojure "1.8.0"] 
       [ring "1.3.2"] 
       [compojure "1.5.1"] 
       [ring/ring-defaults "0.2.1"] 
       [hiccup "1.0.5"] 
       [selmer "1.10.3"] 
       [com.cemerick/friend "0.2.0"] 
       [de.ubercode.clostache/clostache "1.4.0"] 
       [com.taoensso/carmine "2.15.0"]] 
    :main fu.handler 
    :plugins [[lein-ring "0.9.7"]] 
    :ring {:handler fu.handler/app 
     :auto-reload? true 
     :auto-refresh? true} 
    :aot [fu.handler] 
    :uberjar-name "fu-example-default.jar" 
    :profiles { 
      :provided {:dependencies [[nginx-clojure "0.4.4"]]} 
      :dev {:dependencies [[javax.servlet/servlet-api "2.5"] 
            [ring/ring-mock "0.3.0"]]} 
      :embed {:dependencies 
         [[nginx-clojure/nginx-clojure-embed "0.4.4"]] 
        :aot [fu.handler] 
        :main fu.handler 
        :uberjar-name "fu-example-embed.jar" 
        } 
}) 

오류 메시지 :

lein와 프로파일 삽입 경고 uberjar : 당신은 루트로 실행하고; 아마 우연히. Ctrl-C를 눌러 중단하거나 Enter 키를 눌러 루트로 계속 진행하십시오. LEIN_ROOT를 설정하여이 경고를 비활성화하십시오.

Compiling fu.handler 
Compiling fu.handler 
nil 
Exception in thread "main" java.lang.ExceptionInInitializerError, compiling:(/tmp/form-init8960082151990763547.clj:1:73) 
    at clojure.lang.Compiler.load(Compiler.java:7391) 
    at clojure.lang.Compiler.loadFile(Compiler.java:7317) 
    at clojure.main$load_script.invokeStatic(main.clj:275) 
    at clojure.main$init_opt.invokeStatic(main.clj:277) 
    at clojure.main$init_opt.invoke(main.clj:277) 
    at clojure.main$initialize.invokeStatic(main.clj:308) 
    at clojure.main$null_opt.invokeStatic(main.clj:342) 
    at clojure.main$null_opt.invoke(main.clj:339) 
    at clojure.main$main.invokeStatic(main.clj:421) 
    at clojure.main$main.doInvoke(main.clj:384) 
    at clojure.lang.RestFn.invoke(RestFn.java:421) 
    at clojure.lang.Var.invoke(Var.java:383) 
    at clojure.lang.AFn.applyToHelper(AFn.java:156) 
    at clojure.lang.Var.applyTo(Var.java:700) 
    at clojure.main.main(main.java:37) 
Caused by: java.lang.ExceptionInInitializerError 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:278) 
    at clojure.lang.RT.classForName(RT.java:2168) 
    at clojure.lang.RT.classForName(RT.java:2177) 
    at clojure.lang.RT.loadClassForName(RT.java:2196) 
    at clojure.lang.RT.load(RT.java:443) 
    at clojure.lang.RT.load(RT.java:419) 
    at clojure.core$load$fn__5677.invoke(core.clj:5893) 
    at clojure.core$load.invokeStatic(core.clj:5892) 
    at clojure.core$load.doInvoke(core.clj:5876) 
    at clojure.lang.RestFn.invoke(RestFn.java:408) 
    at clojure.core$load_one.invokeStatic(core.clj:5697) 
    at clojure.core$compile$fn__5682.invoke(core.clj:5903) 
    at clojure.core$compile.invokeStatic(core.clj:5903) 
    at clojure.core$compile.invoke(core.clj:5895) 
    at user$eval20$fn__29.invoke(form-init8960082151990763547.clj:1) 
    at user$eval20.invokeStatic(form-init8960082151990763547.clj:1) 
    at user$eval20.invoke(form-init8960082151990763547.clj:1) 
    at clojure.lang.Compiler.eval(Compiler.java:6927) 
    at clojure.lang.Compiler.eval(Compiler.java:6917) 
    at clojure.lang.Compiler.eval(Compiler.java:6917) 
    at clojure.lang.Compiler.load(Compiler.java:7379) 
    ... 14 more 
Caused by: java.lang.ClassCastException: taoensso.carmine.protocol.Context cannot be cast to taoensso.carmine.protocol.Context 
    at taoensso.carmine.commands$enqueue_request.invokeStatic(commands.clj:211) 
    at taoensso.carmine.commands$enqueue_request.invoke(commands.clj:196) 
    at taoensso.carmine$keys.invokeStatic(carmine.clj:128) 
    at taoensso.carmine$keys.invoke(carmine.clj:128) 
    at fu.handler$fn__8942$fn__8943$fn__8944.invoke(handler.clj:35) 
    at taoensso.carmine.protocol$_with_replies.invokeStatic(protocol.clj:340) 
    at taoensso.carmine.protocol$_with_replies.invoke(protocol.clj:328) 
    at fu.handler$fn__8942$fn__8943.invoke(handler.clj:35) 
    at fu.handler$fn__8942.invokeStatic(handler.clj:35) 
    at fu.handler$fn__8942.invoke(handler.clj:35) 
    at fu.handler__init.load(Unknown Source) 
    at fu.handler__init.<clinit>(Unknown Source) 
    ... 36 more 

컴파일 실패 : 컴파일 실패 : '포함'항아리가 실패했기 때문에 Uberjar가 중단 : 하위 프로세스는 오류 프로파일 (들)와 함께 작업 'uberjar'을 수행 발생 실패 하위 프로세스가 항아리에 실패 Uberjar이 중단 실패 컴파일 실패 : 서브 프로세스가 실패했습니다.

+1

'lein clean'을 먼저 실행하려고 했습니까? –

+0

관련 문제 (CLJ-979) (http : // dev. clojure.org/jira/browse/CLJ-979) 꽤 오랫동안 고쳐진 것으로 보인다. –

+0

Piotrek, 예, 했어요. – RRR

답변

0

monger와 나는 문제점의 근원을 발견했습니다. Redis는 예를 들어 qualifield 키워드를 사용할 수 있습니다. "#{::사용자}". 그러나 스크립트를 컴파일하면 .. 몽고 (mongodb)와 같이 작동하여 더 이상 키워드를 읽을 수 없습니다. 쓸 수는 있지만 읽을 수는 없습니다. 어쩌면 그것은 버그입니다. (그런데, 우리가 uberjar로 컴파일했을 때를 대비해서)