无法加载新的clojure库

xif*_*urC 10 clojure classpath require leiningen

我正在尝试第二天的clojure,我几乎什么都不懂.我正在使用Programming Clojure 2nd ed.我被困在图书馆里.

我有Leiningen并且正在运行REPL.这本书首先告诉读者运行简单

(require 'clojure.java.io)
Run Code Online (Sandbox Code Playgroud)

哪个工作得很好(我得到一个零).然后它想通过运行另一个简单来加载一个名为introduction.clj的文件

(require 'examples.introduction)
Run Code Online (Sandbox Code Playgroud)

我收到错误消息的地方

FileNotFoundException Could not locate clojure/java/introduction__init.class
or clojure/java/introduction.clj on classpath:   clojure.lang.RT.load (RT.java:432)
Run Code Online (Sandbox Code Playgroud)

我下载了introduction.clj文件,看看我应该放在哪里.错误和书说该命令将在我的类路径中搜索,但我不知道在哪里或那是什么(在搜索和阅读1小时后我仍然没有得到它,对不起).我运行了一些命令,并列出了许多类路径(其中没有包含clojure/java/io.clj).

所以我尝试了另一种方法 - 在我的磁盘上找到io.clj文件,只需将文件复制到那里并使用命令运行它

(require 'clojure.java.introduction)
Run Code Online (Sandbox Code Playgroud)

这似乎也不起作用.顺便说一句,我找到的io.clj文件位于"C:\ Program Files\clojure\src\clj\clojure\java"中.我尝试从java文件夹中运行其他几个.clj文件以及clojure文件夹,比如javadoc.clj或inspector.clj,所有这些文件似乎都可以正常使用上面提到的命令.只有新文件似乎不会以这种方式加载.

任何帮助赞赏:)

noa*_*hlz 6

Clojure在Java虚拟机上运行,​​因此您需要了解一些有关PATH和CLASSPATH概念的知识:

请参阅:http://docs.oracle.com/javase/tutorial/essential/environment/paths.html

关于错误消息,Clojure运行时期望introduction.clj在目录中找到clojure\java\example\introduction.clj(不是它应该在哪里 - 见下文).

Clojure名称空间的约定是最后一个组件是文件名,而以前的任何组件都是父目录.所以

clojure.java.introduction
Run Code Online (Sandbox Code Playgroud)

必须在目录中(相对于您的源"root"或类路径)

clojure\java\introduction.clj
Run Code Online (Sandbox Code Playgroud)

(lein REPL会自动将源根添加到类路径中).

您需要了解的另一个概念是源代码的"根"所在的位置.对于Leiningen(您正在使用的构建工具),默认值为"src"或"src/main/clojure" - 如GitHub上的Leiningen 示例项目文件中所述.

最后,如果你真的陷入困境,看来这本书的完整项目可以在GitHub上找到.

看看这个项目,我发现你应该把文件放在下面 src\examples\introduction.clj