clojure-noir项目与生成的uberjar - NoClassDefFoundError

时间:2012-04-26 11:16:59

标签: clojure leiningen noir

按照http://www.webnoir.org/指示创建一个新项目 - 我运行了lein uberwar - 这会生成一个(可执行的)jar - 但是它无法找到清单中提到的主类 - 没有找到类文件。

应用程序以“lein run”运行。

uberjar是否能够以这种方式运行(我希望它能够启动嵌入式码头?)

FYI Jar produced with lein uberjar fails on NoClassDefFoundError类似 - 但过时了(这是leiningen的新版本,其中修复了特定错误。)

1 个答案:

答案 0 :(得分:4)

诀窍是将gen-class添加到server.clj

(ns myproject.server ... (:gen-class))

例如: 我刚刚使用lein uberjar进行部署,我有以下内容:

在我的project.clj中:

:main myproject.server

在我的server.clj中:

(ns myproject.server
  (:require [noir.server :as server]
    [myproject.views.common]
    [myproject.views.index])
  (:gen-class))

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

(defn -main [& m]
  (let [mode (keyword (or (first m) :dev))
        port (Integer. (get (System/getenv) "PORT" "8080"))]
    (server/start port {:mode mode
                        :ns 'myproject})))
  • 需要顶部的视图
  • 根级
  • 负载的观点

现在它适用于java -jar myproject-standalone.jar。