【发布时间】:2012-06-13 21:44:44
【问题描述】:
我希望有两个主要的类(或更多)与 leiningen,然后能够在 java 命令行中选择哪一个。例如我有:
(ns abc (:gen-class))
(defn -main [] (println "abc"))
(ns def (:gen-class))
(defn -main [] (println "def"))
使用 project.clj 具有:
(defproject my-jar "0.0.1"
:description "test"
:dependencies [
]
:main abc)
然后我用lein uberjar 构建,然后运行:
java -cp my-jar-0.0.1-standalone.jar abc
java -cp my-jar-0.0.1-standalone.jar def
我知道,当我在 project.clj 中指定 :main abc 时,它会将其作为清单中的主类调用,但如果不添加 一些东西,我无法让它运行>。但无论哪种方式,当我尝试运行“def”主程序时,我都找不到一个类:
Exception in thread "main" java.lang.NoClassDefFoundError: def
【问题讨论】:
-
为什么不使用 clojure cli github.com/clojure/tools.cli 并传递一个命令行参数来调用每个不同的选项?
-
最终,拥有多个主电源(快速开发/测试)只是暂时的情况。但我不知道 tools.cli 所以感谢链接。我相信我将来会使用它。