2015-08-27 6 views
2

У меня есть проект Clojure/Ring/Clojurescript, который я развертываю с lein uberjar, а затем запустил его с java -jar whatever-0.1-standalone.jar. До недавнего времени он работал нормально.Lein uberjar выполняет repl, а не мое приложение

Теперь, когда я запускаю его, мне представляется REPL, вот так:

Clojure 1.7.0 user=>

Думая, что это должно быть что-то в моей базе кода, я вернулся (с мерзавцем) в состояние я знаю, привык работать, но проблема все еще имеет место.

Поскольку проблема не в моей кодовой базе, я попробовал более старую версию leiningen - все равно не повезло.

Вот мой project.clj:

(defproject acfe "0.5" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
         :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[compojure "1.4.0"] 
           [org.clojure/clojure "1.7.0"] 
           [org.clojure/data.json "0.2.6"] 
           [org.clojure/clojurescript "0.0-3308"] 
           [org.clojure/core.async "0.1.346.0-17112a-alpha"] 
           [mysql/mysql-connector-java "5.1.32"] 
           [org.clojure/java.jdbc "0.4.1"] 
           [yesql "0.4.2"] 
           [ring "1.4.0"] 
           [ring-basic-authentication "1.0.5"] 
           [bk/ring-gzip "0.1.1"] 
           [prismatic/dommy "1.1.0"] 
           [enlive "1.1.6"] 
           [cljs-ajax "0.3.13"]] 
    :plugins [[lein-ring "0.9.6"] 
         [lein-cljsbuild "1.0.6"]] 
    :ring {:handler acfe.core/app 
       :port 3001} 
    :cljsbuild 
    {:builds 
    {:app 
     {:source-paths ["src-cljs"] 
     :compiler 
     {:optimizations :simple 
      :output-to "resources/public/js/out/app.js" 
      :pretty-print true}}}}) 

ответ

4

Вы уверены, что вы на самом деле здание банку с lein uberjar раньше, когда он работал? У вас нет основного пространства имен, вместо этого в зависимости от плагина lein-ring для его изготовления, что означает, что вместо этого вы должны использовать lein ring uberjar.

+1

Все, спасибо! Я забыл, какую команду запустить, «lein ring uberjar» работает красиво. – user16973

+0

Спасибо! Я просто столкнулся с этой проблемой! – paniclater

2

Если у вас нет пространства имен :main в project.clj, leiningen (по крайней мере, последние версии) будет по умолчанию clojure.main. Если вы распакуете файл jar и загляните внутрь META-INF/MANIFEST.MF, вы можете проверить. Вы увидите строку, которая выглядит следующим образом:

Main-Class: clojure.main

Добавить отображение как это, чтобы установить главный класс:

:main whatever.core (предполагая, что вы хотите, -main функцию в этом пространстве имен).

 Смежные вопросы

  • Нет связанных вопросов^_^