【问题标题】:clojure-noir project with generated uberjar - NoClassDefFoundError带有生成的 uberjar 的 clojure-noir 项目 - NoClassDefFoundError
【发布时间】:2012-04-26 11:16:58
【问题描述】:

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

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

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

仅供参考 Jar produced with lein uberjar fails on NoClassDefFoundError 类似 - 但已过时(这是修复了特定错误的更新版本的 leiningen)。

【问题讨论】:

  • 我在 webnoir 网站上找不到任何提及“uber”、“war”或“jar”的内容。它只提到安装 lein-noir 插件并运行它来创建一个新项目。

标签: clojure leiningen noir


【解决方案1】:

诀窍是将 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})))
  • 需要顶部的视图
  • gen-class
  • 加载视图

现在 java -jar myproject-standalone.jar 可以正常工作了。

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2021-01-22
    相关资源
    最近更新 更多