Я хотел бы иметь два основных класса (или более) с 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
Я получаю, что когда я указал :main abc
в project.clj, он вызывал это как основной класс в манифесте, но я не мог заставить его работать, не помещая что-то. Но в любом случае, когда я пытаюсь запустить "def" main, я получаю класс не найден:
Exception in thread "main" java.lang.NoClassDefFoundError: def