У меня есть hello.clj следующим образом.
(ns hello)
(defn hi [] (println "HI"))
Обычно, я могу использовать эту функцию от main.clj следующим образом. hello.clj находится в том же каталоге, который содержит main.clj. И путь к классу включает. (текущий путь).
(use 'hello)
(hi)
Как я могу использовать этот hello.clj для 'lein uberjar'?
Я использовал 'lein новый myproject; DEP lein для получения следующей структуры.
. |-- README |-- classes | `-- myproject |-- lib | |-- clojure-1.2.0-beta1.jar | |-- clojure-contrib-1.2.0-beta1.jar | `-- lucene-core-3.0.2.jar |-- project.clj |-- src | `-- myproject | `-- core.clj `-- test `-- myproject `-- test `-- core.clj
project.clj следующие.
(defproject myproject "1.0.0-SNAPSHOT"
:description "FIXME: write"
:dependencies [[org.clojure/clojure "1.2.0-beta1"]
[org.clojure/clojure-contrib "1.2.0-beta1"]
[org.apache.lucene/lucene-core "3.0.2"]]
:main myproject.core)
И core.clj следующие.
(ns myproject.core
(:gen-class))
(use 'hello)
(defn test1 [] (println "hello"))
(defn -main [& args]
(do
(println "Welcome to my project! These are your args:" args)
(test1)
(hi)))
Теперь, где я помещаю hello.clj? Я пытался скопировать его в myproject/src каталог и выполнить uberjar для получения банки. Но, выполнение банки вызывает это сообщение об ошибке.
prosseek:myproject smcho$ java -jar myproject-1.0.0-SNAPSHOT-standalone.jar a d d Exception in thread "main" java.lang.ExceptionInInitializerError Caused by: java.io.FileNotFoundException: Could not locate hello__init.class or hello.clj on classpath: (core.clj:0) ...
Я загрузил проект здесь.