2012-04-26 47 views
2

以下http://www.webnoir.org/指示創建一個新項目 - 我跑lein uberwar - 這會生成一個(可執行)jar - 但它無法找到清單中提到的主類 - 沒有找到類文件。clojure-noir項目與生成的uberjar - NoClassDefFoundError

該應用程序運行「lein run」運行。

是指能夠運行這種方式(我希望它會啓動一個嵌入式碼頭?)

FYI Jar produced with lein uberjar fails on NoClassDefFoundError類似的uberjar - 但過時的(這是與特定leiningen其中的一個較新版本錯誤已修復)。

+0

我在webnoir網站上找不到任何關於「超級」,「戰爭」或「罐子」的提及。它只提到安裝lein-noir插件並運行它來創建一個新項目。 – ivant 2012-04-27 06:51:59

回答

4

關鍵是要增加GEN-類server.clj

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

例如:使用雷音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的罐子的myproject-standalone.jar。

+0

你是對的 - 增加:gen-class是缺少的。 – 2012-04-29 10:03:11