我正在阅读关于编译的clojure.org上的documention,这是最后一部分基因类示例。我做了这些示例,然后当我尝试在终端中使用:java -cp ./classes:clojure.jar clojure.examples.hello Fred
作为Java应用程序运行时,我得到:Error: Could not find or load main class clojure.examples.hello
。有人可以帮忙吗?
有人可以介绍在哪里学习gen-class和:gen-class,我在网上找不到太多文档
答案 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 开始