Clojure加载文件
我正在尝试设置一个简单的clojure项目,但我不确定如何在项目之间加载文件。我确信答案在文档中,但我在任何地方都找不到简单的答案,我也不确定该去哪里寻找 基本上,我的目录如下所示:Clojure加载文件,clojure,Clojure,我正在尝试设置一个简单的clojure项目,但我不确定如何在项目之间加载文件。我确信答案在文档中,但我在任何地方都找不到简单的答案,我也不确定该去哪里寻找 基本上,我的目录如下所示: Clojure/ clojure/ clojure.jar other clojure files clojure-contrib/ clojure-contrib.jar other contrib files project
Clojure/
clojure/
clojure.jar
other clojure files
clojure-contrib/
clojure-contrib.jar
other contrib files
project/
main.clj
utils.clj
(ns project.main
(:require project.utils))
(greet)
(ns project.utils)
(defn greet [] (println "Hello, World!"))
我希望main.clj是这样的:
Clojure/
clojure/
clojure.jar
other clojure files
clojure-contrib/
clojure-contrib.jar
other contrib files
project/
main.clj
utils.clj
(ns project.main
(:require project.utils))
(greet)
(ns project.utils)
(defn greet [] (println "Hello, World!"))
而utils.clj是这样的:
Clojure/
clojure/
clojure.jar
other clojure files
clojure-contrib/
clojure-contrib.jar
other contrib files
project/
main.clj
utils.clj
(ns project.main
(:require project.utils))
(greet)
(ns project.utils)
(defn greet [] (println "Hello, World!"))
但这在以下方面是行不通的:
Exception in thread "main" java.io.FileNotFoundException: Could not locate project/utils__init.class or project/utils.clj on classpath: (main.clj:1)
当我尝试运行它时。我的类路径包括顶部的Clojure/
目录和两个jar。我还尝试将project/
目录也放在类路径中,但没有成功
如何设置一个简单的clojure项目?您没有提到您的环境是什么(即Emacs/SLIME/Swank、vim/Vimclojure),因此我假设您正在尝试从命令行调用它 您需要在类路径中有
Clojure/
项目目录:
java -cp path/to/clojure.jar:path/to/clojure-contrib.jar:path/to/Clojure ...
确保相对于当前工作目录检查路径是否正确。它需要指向命名空间的根(即,如果在Clojure/
中运行,则路径为
)
事实上,您的项目布局可以在我的机器(tm)上运行,但我使用了use
而不是require
(但如果Clojure能够找到您的所有文件,您应该会遇到不同的错误).我发布了另一个问题,希望能让您了解文件名与命名空间名称之间的关系。但是,由于您的问题是“如何设置一个简单的Clojure项目”,以下是一个更好的开始:
$ lein new my-project
$ cd my-project
# ... edit project.clj ...
$ lein deps
myproject/src
,核心命名空间很可能位于myproject/src/myu project/core.clj
。但实际上,我已经在中解释了所有细节,所以请阅读(如果我遗漏了什么,请留下评论):-)Leiningen将负责基本的项目布局,并为您设置REPL/swank/NALGUN的类路径(如果您还没有遇到后两者,您很快就会遇到——但这是一个单独的主题,我已经在一定程度上介绍了swank部分,例如),所以,希望您永远不需要手动处理
java-cp…
废话。(我在最后一个插入语中链接到的与swank相关的答案详细介绍了如何从Emacs中使用正确的类路径设置swank。)谢谢。原来我的问题是因为我是从project/
内部运行的,所以我需要将。
添加到类路径中。它正在工作。顺便说一下,Vim\VimClojure.:)也许这对问题的作者有用:-介绍与Leiningen的合作