Как установить путь к классу при выполнении банки, сделанной из 'lein uberjar'?

У меня есть 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)
...
  • Что могло бы быть неправильным? В сообщениях об ошибках говорится, что hello.clj не находится на пути к классу. Но, как установить путь к классу с 'lein uberjar'?

Я загрузил проект здесь.

5
задан prosseek 2 August 2010 в 19:05
поделиться