Clojure: Как запустить мою главную из банки?

У меня есть приложение Clojure, упакованное в банку. Я запускаю его как:

java -cp lib/clojure-1.2.0.jar:my-app.jar clojure.main -e "(use 'foo.main)(-main)"

Это единственный способ запустить мое приложение из этой банки? В частности, мне бы хотелось увидеть что-то простое:

java -cp lib/clojure-1.2.0.jar:my-app.jar clojure.main foo.main

Ответы

Ответ 1

Используйте

(ns foo.main
  (:gen-class)

в вашем основном источнике, чтобы создать пакетный класс класса пакета пространства имен. Добавить

:main foo.main
:manifest {"Class-Path" "lib/clojure-1.2.0.jar"}

в файл проекта Leiningen. После "lein jar" вы можете запустить приложение, используя метаданные из файла манифеста, встроенного JAR:

java -jar foo-YOURVERSION.jar

Ответ 2

Если вы упаковываете свое приложение с задачей leiningens uberjar, тогда все, что вам нужно сделать, запускается,

java -jar name-of-your-app.jar