2

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

该应用程序使用“lein run”运行。

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

仅供参考,使用 lein uberjar 生成的 Jar 在 NoClassDefFoundError 上失败是类似的 - 但已过时(这是修复了特定错误的 leiningen 的较新版本)。

4

1 回答 1

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。

于 2012-04-27T17:24:58.743 回答