2012-04-26 2 views
2

Следуя инструкциям http://www.webnoir.org/, чтобы создать новый проект - я побежал lein uberwar - это генерирует один (исполняемый) банку - однако он не может найти основной класс, как указано в манифесте - файл класса не найден.Проект clojure-noir сгенерированный uberjar - NoClassDefFoundError

Приложение запускается с «лейн-бегом».

ли uberjar предназначается, чтобы быть в состоянии выполнить этот путь (я надеюсь, он запускает встроенный причал?)

FYI Jar produced with lein uberjar fails on NoClassDefFoundError похож - но из даты (это с более новой версией Leiningen где что конкретного ошибка исправлена).

+0

Я не мог найти упоминания о «uber», «war» или «jar» на веб-сайте. В нем упоминается только установка плагина lein-noir и запуск его для создания нового проекта. – ivant

ответ

4

Хитрость заключается в том, чтобы добавить ген-класс 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.

+0

Вы правы - добавление: gen-class - это то, чего не хватало. –