leiningenを使用して2つ(またはそれ以上)のメインクラスを作成し、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' mainを実行しようとすると、クラスが見つかりません。
Exception in thread "main" java.lang.NoClassDefFoundError: def