使用lein uberjar构建的Clojure应用程序未启动

时间:2013-03-19 17:56:36

标签: clojure leiningen

我有一个小小的命令行Clojure应用程序,它是用'lein uberjar'构建的。结果jar文件在启动时不会调用我的main函数,也不会给我任何类型的堆栈跟踪或其他错误条件的指示。

% lein version
Leiningen 2.0.0 on Java 1.7.0_10 Java HotSpot(TM) 64-Bit Server VM
% lein uberjar
Compiling spelunker.core
Compiling spelunker.core
Created /Users/temerson/Work/ddp-qa-tool/spelunker/target/spelunker-0.1.0-SNAPSHOT.jar
Including spelunker-0.1.0-SNAPSHOT.jar
Including lucene-core-3.6.2.jar
Including clojure-1.4.0.jar
Created /Users/temerson/Work/ddp-qa-tool/spelunker/target/spelunker-0.1.0-SNAPSHOT-standalone.jar 

% java -jar target/spelunker-0.1.0-SNAPSHOT-standalone.jar
%

它应显示用法消息,而不是任何内容。我检查了(对我来说)显而易见的事情:我的项目文件包含

(defproject spelunker "0.1.0-SNAPSHOT"
  :description "Spelunk through Lucene data to find nuggets of useful data."
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.apache.lucene/lucene-core "3.6.2"]]
  :main spelunker.core
  :aot [spelunker.core])

和spelunker / core.clj包含

(ns spelunker.core
  (:import (org.apache.lucene.analysis.standard StandardAnalyzer)
           (org.apache.lucene.document Document Field Field$Store Field$Index)
           (org.apache.lucene.index IndexReader IndexWriter IndexWriter$MaxFieldLength)
           (org.apache.lucene.store NIOFSDirectory RAMDirectory)
           (org.apache.lucene.util Version))
  (:gen-class))

并且主要功能因此定义(现在):

(defn -main [& args]
  (print "DAFUQ?"))

对于所有意图和目的,这应该有效:如果我使用leiningen app new创建存根应用程序,它可以正常工作。但不是以上。

如果我至少得到某种堆栈跟踪(即我可以调查的东西),我会感觉很好,但沉默正在扼杀我。

有人有什么想法吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

退出前你没有冲洗过。在print中将println更改为-main,换行符会自动刷新,或者以明确的同花顺序跟随您的打印。