Я хотел бы иметь два основных класса (или более) с leiningen, а затем иметь возможность выбирать, какой из них в командной строке java. Например, у меня есть:
(ns abc (:gen-class))
(defn -main [] (println "abc"))
(ns def (:gen-class))
(defn -main [] (println "def"))
С проектом.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, он вызывал это как основной класс в манифесте, но я не мог заставить его работать, не добавляя что-то. Но в любом случае, когда я пытаюсь запустить main 'def', я получаю не найденный класс:
Exception in thread "main" java.lang.NoClassDefFoundError: def