I have a hello.clj as follows.
(ns hello)
(defn hi [] (println "HI"))
Normally, I can use this function from main.clj as follows. The hello.clj is in the same directory that contains main.clj. And the classpath includes . (current path).
(use 'hello)
(hi)
How can I use this hello.clj for the 'lein uberjar'?
I used 'lein new myproject; lein deps' to get the following structure.
. |-- 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 is as follows.
(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)
And core.clj is as follows.
(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)))
Now, where do I put the hello.clj? I tried to copy it to myproject/src directory and run uberjar to get the jar. But, running the jar causes this error message.
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) ...
- What might be wrong? Error messages says hello.clj is not on the class path. But, how to setup the classpath with 'lein uberjar'?
I uploaded the project here.