clojure leiningen

corriendo clojure con leiningen



(3)

Hice un proyecto llamado my-stuff y lo agregué a project.clj para que se vea así

(defproject my-stuff "0.1.0-SNAPSHOT" :description "Testing lein" :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.5.1"] [clj-http "0.5.5"]] :main my-stuff.core)

así que puedo ejecutar el núcleo sin embargo, cuando trato de ejecutar lein run me sale esto

Learning/my-stuff>lein run Exception in thread "main" java.lang.Exception: Cannot find anything to run for: my-stuff.core at user$eval5.invoke(form-init5159589073116828284.clj:1) at clojure.lang.Compiler.eval(Compiler.java:6619) at clojure.lang.Compiler.eval(Compiler.java:6609) at clojure.lang.Compiler.load(Compiler.java:7064) at clojure.lang.Compiler.loadFile(Compiler.java:7020) at clojure.main$load_script.invoke(main.clj:294) at clojure.main$init_opt.invoke(main.clj:299) at clojure.main$initialize.invoke(main.clj:327) at clojure.main$null_opt.invoke(main.clj:362) at clojure.main$main.doInvoke(main.clj:440) at clojure.lang.RestFn.invoke(RestFn.java:421) at clojure.lang.Var.invoke(Var.java:419) at clojure.lang.AFn.applyToHelper(AFn.java:163) at clojure.lang.Var.applyTo(Var.java:532) at clojure.main.main(main.java:37) /Clojure/Learning/my-stuff>

incluso aunque el núcleo exista en la fuente.

¿qué debo hacer?


Al establecer la clave :main en el archivo project.clj, Leiningen ejecuta la función -main en el espacio de nombres especificado. No se incluye en la plantilla lein predeterminada, por lo que debe agregarla.

(ns my-stuff.core) (defn -main [& args] (println "Working!"))


En mi caso, el archivo "src / my-stuff / core.clj" no tenía un método "-main" en su lugar

(ns my-stuff.core) (defn foo [& args] (println "Working!"))

Tuve que cambiar "foo" a "-main".


Solo otra nota: en mi caso tuve algunos puntos de entrada con -main en mi prisa que había copiado (ns ... de otro archivo y me olvidé de cambiarlo.

proyecto / core.clj
(ns project.core ...)

proyecto / app.clj
(ns project.core ...) <- oops

Por lo tanto, compruebe que la :main que especificó realmente existe en su proyecto.