Я хотел бы иметь два основных класса (или более) с leiningen, а затем иметь возможность выбрать, какой из них находится в командной строке java. Например, у меня есть:leiningen с несколькими основными классами
(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
в проекте.clj он называл это основным классом в манифесте, но я не мог заставить его работать, не помещая что-то. Но в любом случае, когда я пытаюсь запустить «Защиту» главный, я получаю класс не найден:
Exception in thread "main" java.lang.NoClassDefFoundError: def
Почему бы не использовать clojure cli https://github.com/clojure/tools.cli и передать аргумент строки cmd для вызова каждого из разных параметров? – locojay
В конечном итоге это была временная ситуация, когда у вас было несколько сетей (быстрая разработка/тестирование). Но я не знал о tools.cli, поэтому спасибо за ссылку. Я уверен, что буду использовать его в будущем. – Kevin