Clojure.org关于编译和gen-class的文档

时间:2016-01-21 22:43:24

标签: clojure gen-class

  1. 我正在阅读关于编译的clojure.org上的documention,这是最后一部分基因类示例。我做了这些示例,然后当我尝试在终端中使用:java -cp ./classes:clojure.jar clojure.examples.hello Fred作为Java应用程序运行时,我得到:Error: Could not find or load main class clojure.examples.hello。有人可以帮忙吗?

  2. 有人可以介绍在哪里学习gen-class和:gen-class,我在网上找不到太多文档

1 个答案:

答案 0 :(得分:4)

来自你的基础+系统+用户+ dave的命令java -cp ./classes:clojure.jar tst.core几乎是正确的。 java.lang.NoClassDefFoundError: clojure/lang/IFn错误是因为JVM无法找到Clojure类,因为clojure.jar目录中没有base+system+user+dave文件,因此您需要为clojure.jar文件指定正确的路径。

当您使用lein时,它会将您的项目依赖项下载到local repository。其中一个依赖项是Clojure本身,所以假设你在iOS / Linux上并且你的lein project.clj与clojure 1.7.0有依赖关系,那么从base + system + user + dave目录运行的命令将是:

java -cp ./classes:~/.m2/repository/org/clojure/clojure/1.7.0/clojure-1.7.0.jar tst.core 

一旦你有多个依赖项,这会变得非常烦人,我建议使用lein uberjar来创建一个名为your-project-name-standalone.jar的target目录中的文件将拥有所有必需的类,因此要从命令行运行它,转到目标目录并运行类似:

java -cp tst-standalone.jar tst.core

要了解有关类路径如何在JVM中工作的更多信息,您可以从Wikipedia 开始