Я нахожу, что новое приложение из лейн можно запустить как uberjar, но не как банку. Должно ли это работать так, или что-то не так с моей настройкой?Как я могу запустить банку из нового приложения lein без использования uberjar?
$ lein new app feedme
$ cd feedme
Lein uberjar работает просто отлично:
$ lein uberjar
Compiling feedme.core
Created .../feedme/target/uberjar+uberjar/feedme-0.1.0-SNAPSHOT.jar
Created .../feedme/target/uberjar/feedme-0.1.0-SNAPSHOT-standalone.jar
$ java -jar target/uberjar/feedme-0.1.0-SNAPSHOT-standalone.jar
Hello, World!
Lein банка не удается:
$ lein jar
Warning: The Main-Class specified does not exist within the jar. It may not be executable as expected. A gen-class directive may be missing in the namespace which contains the main method.
Created .../feedme/target/feedme-0.1.0-SNAPSHOT.jar
$ java -jar target/feedme-0.1.0-SNAPSHOT.jar
Error: Could not find or load main class feedme.core
Там есть: генераторный класс директива в разделе нса core.clj, так что я м не знаю, в чем проблема:
$ cat src/feedme/core.clj
(ns feedme.core
(:gen-class))
(defn -main
"I don't do a whole lot ... yet."
[& args]
(println "Hello, World!"))
А, это полезно знать. Когда вы говорите «self-runnable», я предполагаю, что это означает, что вы можете запускать его, как java -jar myapp.jar, а не как ./myapp.jar. – ijt
Да 'java -jar myapp.jar' запускает основной класс - вот что я имел в виду под« self-runnable ». В зависимости от настройки вашей ОС двойной щелчок сделает это. И вся информация о classpath не обязательно должна быть там, поскольку информация cp, как и основной класс, указана в самом файле jar. –