4

今天我注意到了一些奇怪的事情。当我不在一个项目中时(也就是说,shell 不在 clojure 项目的目录中),我可以使用它exit来退出 REPL:

shell$ lein repl
REPL started; server listening on localhost port 43712
user=> (+ 3 4)
7
user=> (exit)
shell$ echo '<span>not in <s>kansas</s>clojure anymore</span>'

当我“进入”一个项目时(即外壳位于 clojure 项目的目录中),我不能使用exit

shell$ cd my_clojure_project
shell$ lein repl
REPL started; server listening on localhost port 69237
user=> (* 8 4)
32
user=> (exit)
java.lang.Exception: Unable to resolve symbol: exit in this context (NO_SOURCE_FILE:2)
user=>

这里有什么问题?


Clojure 版本(两个示例):

user=> (clojure-version)
"1.2.1"

Leiningen 版本(两个示例):

shell$ lein -v
Leiningen 1.6.1 on Java 1.6.0_26 Java HotSpot(TM) 64-Bit Server VM
4

1 回答 1

5

似乎是因为leiningen.core有项目时命名空间不可用。更具体地说,当有一个项目时,您的项目代码会在一个单独的 ClassLoader 中进行评估,而类路径中只有您的项目。因此,没有任何 Leiningen 函数可用。

Leiningen 2 REPL 没有这个问题。

于 2012-04-19T21:29:20.530 回答