2016-02-26 4 views
2

clojure -h При чтении * Я нашел --main вариант:Как использовать `Clojure --main`

main options: 
    -m, --main ns-name Call the -main function from a namespace with args 

Имея следующий код:

(defn -main 
    "I don't do a whole lot ... yet." 
    [& args] 
    (println "Hello, World!")) 

Можно ли использовать --main аргумент для прямого вызова функции -main без использования lein?

* clojure = java ${JAVA_OPTS} -jar path_to_clojure.jar "[email protected]"

ответ

1

Да. Предполагая, что -main функция находится в файле ./src/foo/core.clj следующее будет запустить его:

java -cp "path_to_clojure.jar:src" clojure.main --main foo.core (обратите внимание на src в пути к классам)

+0

Так что это не будет работать с '-jar' вариант Java? foo.core - namespace.filename? –

+0

Это не сработает, так как вам нужно включить код с функцией _your_ '-main' в путь к классам. Но если ваша цель - запустить проект без leiningen, тогда вы можете сгенерировать исполняемую банку с помощью 'lein uberjar' (она будет содержать ваш код и все зависимости, включая Clojure), а затем вы сможете запустить' java -jar '. –

Смежные вопросы