从clojure文件制作jar文件时出现FileNotFoundException

时间:2010-07-14 14:02:14

标签: clojure compilation

我正在尝试从简单的clojure文件创建一个jar文件。下面是我的clojure代码:

(ns app.first (:gen-class))  
(refer 'clojure.core)  
(defn -main [& args] (println "this program worked!"))  

我正在使用这些说明创建jar文件:http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips

当我尝试完成(compile 'app.first)步骤时,我看到错误“java.io.FileNotFoundException:无法在类路径上找到app / hello__init.class或app / hello.clj :( NO_SOURCE_FILE:0)”。

我的尝试和链接之间的唯一区别是我的文件名(first.clj而不是hello.clj)。

谁能看到我哪里出错了?或者就此而言,我想要做的就是学习如何从clojure文件创建一个jar,所以如果有人知道更好/更简单的方法,请告诉我。

2 个答案:

答案 0 :(得分:2)

最好将Leiningen用于此类任务 - 它允许维护依赖关系,并将所有必要的组件打包到jar文件中

答案 1 :(得分:1)

我生气了,但我听说过其他有类似问题的人。

我认为记住您指定的类路径指向类树的根是有帮助的,并且包名最终会在该树中创建子目录。尴尬地说,但我希望你明白这个主意。因此,我认为你需要做一些一些类型的体操,创建目录以匹配“app.first” - > “/ app / first”层次结构。

对不起,这就像我得出一个明智而有用的答案一样接近。希望这会对你有所帮助。


编辑:

计算机科学的总理指令:它只适用于所有的权利!我花了近10分钟摆弄这个,但终于成功了。

这是我需要做的事情来编译你的程序:

  • 创建了一个目录app,并使用您的代码创建了first.clj
  • 通过在Clojure中执行*compile-path*检查(pr *compile-path)。它说“课程”。
  • 创建了与classes平行的第二个目录app
  • 在shell中
  • 做了export CLASSPATH=.:./classes
  • 在Clojure中,做过(compile 'app.first)

...我在classes找到了一堆类文件。 JARring那些应该是快速的。

我发现运行(doc compile)非常有帮助,因为这提醒我要求有一个目录来满足*compile-path*的要求。