Me gustaría tener dos clases principales (o más) con leiningen, y luego poder elegir cuál en la línea de comando de java. Por ejemplo tengo:leiningen con múltiples clases principales
(ns abc (:gen-class))
(defn -main [] (println "abc"))
(ns def (:gen-class))
(defn -main [] (println "def"))
Con un project.clj tener:
(defproject my-jar "0.0.1"
:description "test"
:dependencies [
]
:main abc)
Entonces construyo con lein uberjar
, y corro:
java -cp my-jar-0.0.1-standalone.jar abc
java -cp my-jar-0.0.1-standalone.jar def
lo entiendo que cuando he especificado :main abc
en el proyecto.clj lo llamaba como la clase principal en el manifiesto, pero no pude hacerlo funcionar sin poner algo. Pero de cualquier manera cuando trato de ejecutar el 'def' principal, tengo una clase que no se encuentra:
Exception in thread "main" java.lang.NoClassDefFoundError: def
¿por qué no utilizar clojure cli https://github.com/clojure/tools.cli y pasar un argumento de línea de cmd para llamar a cada una de las diferentes opciones? – locojay
En última instancia, era una situación temporal tener múltiples líneas principales (desarrollo/pruebas rápidas). Pero no estaba al tanto de las herramientas. Así que, gracias por el enlace. Estoy seguro de que lo usaré en el futuro. – Kevin