我在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之前,该文件肯定在我更改的目录中。
答案 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及其认为的项目根源有关。