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,所有这些文件似乎都可以正常使用上面提到的命令.只有新文件似乎不会以这种方式加载.
任何帮助赞赏:)
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