无法加载文件

时间:2012-01-10 17:06:27

标签: file-io clojure

我在Windows上的以下目录中有文件male_female.clj:

C:\Documents and Settings\vreinpa\My Documents\Books\ProgrammingClojure\code\src\examples

在开始REPL之前,我切换到该目录:

U:\>c:
C:\>cd C:\Documents and Settings\vreinpa\My Documents\Books\ProgrammingClojure\code\src\examples

然后我启动REPL:

C:\Documents and Settings\vreinpa\My Documents\Books\ProgrammingClojure\code\src\examples>lein repl
Warning: classpath not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic classpath or change the name.
REPL started; server listening on localhost:13278.

然后我尝试加载文件,但收到以下错误:

user=> (load-file "male_female.clj")
user=> FileNotFoundException male_female.clj (The system cannot find the file specified)   java.io.FileInputStream.open (:-2)

我在这里做错了什么?在启动REPL之前,该文件肯定在我更改的目录中。

1 个答案:

答案 0 :(得分:3)

您是否正在使用Programming Clojure repo?我只是克隆它并尝试了同样的事情(虽然在Mac上)并且有同样的错误。

如果您是,请尝试从Git仓库的根目录运行lein repl,然后使用(load "examples/male_female")。然后,您可以通过使用(in-ns 'examples.male-female)或完全使用完全限定名称切换到命名空间来访问此文件中的定义:examples.male-female/m等。这适用于我。

我不确定load-file的外观,但我认为load将在Java类路径中查找。您可以使用(System/getProperty "java.class.path")从Clojure REPL检查类路径。

修改

我在阅读load-file上的docs后对其进行了实验,发现这也有效:(load-file "src/examples/male_female.clj"),无论我在项目中的哪个位置。这可能与Leiningen及其认为的项目根源有关。