我有一个 hello.clj 如下。
(ns hello)
(defn hi [] (println "HI"))
通常,我可以使用 main.clj 中的这个函数,如下所示。hello.clj 位于包含 main.clj 的同一目录中。并且类路径包括 . (当前路径)。
(use 'hello)
(hi)
如何将此 hello.clj 用于“lein uberjar”?
我用'lein new myproject; lein deps' 得到以下结构。
. |-- 自述文件 |-- 班级 | `-- 我的项目 |-- 库 | |-- clojure-1.2.0-beta1.jar | |-- clojure-contrib-1.2.0-beta1.jar | `-- lucene-core-3.0.2.jar |-- 项目.clj |-- 源 | `-- 我的项目 | `--core.clj `-- 测试 `-- 我的项目 `-- 测试 `--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 来获取 jar。但是,运行 jar 会导致此错误消息。
prosseek:myproject smcho$ java -jar myproject-1.0.0-SNAPSHOT-standalone.jar 添加 线程“主”java.lang.ExceptionInInitializerError 中的异常 原因:java.io.FileNotFoundException:无法在类路径上找到 hello__init.class 或 hello.clj:(core.clj:0) ...
- 可能有什么问题?错误消息说 hello.clj 不在类路径上。但是,如何使用 'lein uberjar' 设置类路径?
我在这里上传了项目。