0

jar ファイルの作成に苦労しています。ソース パスを追加しても機能しません。走った

lein with-profiles prod uberjar

これが私のproject.cljです。少し短くしました。ほとんどの場合、luminusテンプレートが含まれています。

(defproject codapay "0.1.0-SNAPSHOT"

 :description "FIXME: write description"
 :url "http://example.com/FIXME"

 :dependencies [[org.clojure/clojure "1.7.0"]
                [selmer "0.9.0"]
                [org.immutant/web "2.0.2"]
                [clj-http "2.0.0"]
                [cheshire "5.5.0"]
                ........
                [environ "1.0.0"]
                [com.stuartsierra/component "0.2.3"]]

  :min-lein-version "2.0.0"
  :uberjar-name "codapay.jar"
  :jvm-opts ["-server"]
  :target-path "target/%s/"
  :plugins [[lein-environ "1.0.0"]]
  :profiles
  {:prod {;;:omit-source true
         :env {:production true}
         :aot :all
         :source-paths ["dev"]
         :uberjar-name "coda.jar"
         :main codapay.core}})

そしてこれが私のメインです

(ns codapay.core
  (:require [codapay.handler :refer [app init destroy]]
            [immutant.web :as immutant]
            [clojure.tools.nrepl.server :as nrepl]
            [taoensso.timbre :as timbre]
            [environ.core :refer [env]]
            [codapay.entry :refer [start-app]])
  (:gen-class))

(defn -main [& args]
  (start-app args))

jarファイルを実行します

java -jar coda.jar

この例外で死ぬ

Exception in thread "main" java.lang.ExceptionInInitializerError
        at clojure.lang.Namespace.<init>(Namespace.java:34)
        at clojure.lang.Namespace.findOrCreate(Namespace.java:176)
        at clojure.lang.Var.internPrivate(Var.java:151)
        at codapay.core.<clinit>(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: clout/core/CompiledRoute, compiling:(user.clj:1:1)

clout/core/CompiledRoute が見つからないというエラーが表示されましたが、jar ファイルを抽出するとそこにありました。コンパイルには、uberjar を実行したときに余分なソースパスが 2 回コンパイルされるという奇妙なこともあります。

しかし、プロファイル prod のソース パスを消去すると、正常に動作します。

で実行してみました

lein with-profiles prod run

同じエラーを受け取りましたが、aot または source-paths のいずれかが削除されていれば、正常に実行されます

実際のプロジェクトがどのように見えるか興味がある場合は、ここにリンクがあります

https://github.com/calvinirwan/codapay/tree/uberjar

4

0 に答える 0