Clojure加载文件

Clojure加载文件,clojure,Clojure,我正在尝试设置一个简单的clojure项目,但我不确定如何在项目之间加载文件。我确信答案在文档中,但我在任何地方都找不到简单的答案,我也不确定该去哪里寻找 基本上,我的目录如下所示: Clojure/ clojure/ clojure.jar other clojure files clojure-contrib/ clojure-contrib.jar other contrib files project

我正在尝试设置一个简单的clojure项目,但我不确定如何在项目之间加载文件。我确信答案在文档中,但我在任何地方都找不到简单的答案,我也不确定该去哪里寻找

基本上,我的目录如下所示:

Clojure/
    clojure/
        clojure.jar
        other clojure files
    clojure-contrib/
        clojure-contrib.jar
        other contrib files
    project/
        main.clj
        utils.clj
(ns project.main
  (:require project.utils))
(greet)
(ns project.utils)
(defn greet [] (println "Hello, World!"))
我希望main.clj是这样的:

Clojure/
    clojure/
        clojure.jar
        other clojure files
    clojure-contrib/
        clojure-contrib.jar
        other contrib files
    project/
        main.clj
        utils.clj
(ns project.main
  (:require project.utils))
(greet)
(ns project.utils)
(defn greet [] (println "Hello, World!"))
而utils.clj是这样的:

Clojure/
    clojure/
        clojure.jar
        other clojure files
    clojure-contrib/
        clojure-contrib.jar
        other contrib files
    project/
        main.clj
        utils.clj
(ns project.main
  (:require project.utils))
(greet)
(ns project.utils)
(defn greet [] (println "Hello, World!"))
但这在以下方面是行不通的:

Exception in thread "main" java.io.FileNotFoundException: Could not locate project/utils__init.class or project/utils.clj on classpath:  (main.clj:1)
当我尝试运行它时。我的类路径包括顶部的
Clojure/
目录和两个jar。我还尝试将
project/
目录也放在类路径中,但没有成功


如何设置一个简单的clojure项目?

您没有提到您的环境是什么(即Emacs/SLIME/Swank、vim/Vimclojure),因此我假设您正在尝试从命令行调用它

您需要在类路径中有
Clojure/
项目目录:

java -cp path/to/clojure.jar:path/to/clojure-contrib.jar:path/to/Clojure ...
确保相对于当前工作目录检查路径是否正确。它需要指向命名空间的根(即,如果在
Clojure/
中运行,则路径为

事实上,您的项目布局可以在我的机器(tm)上运行,但我使用了
use
而不是
require
(但如果Clojure能够找到您的所有文件,您应该会遇到不同的错误).

我发布了另一个问题,希望能让您了解文件名与命名空间名称之间的关系。但是,由于您的问题是“如何设置一个简单的Clojure项目”,以下是一个更好的开始:

  • 去GitHub抓取

  • 按照自述文件中的说明进行操作。你最终会做类似的事情

    $ lein new my-project
    $ cd my-project
    # ... edit project.clj ...
    $ lein deps
    
  • 走开!你需要把文件放在正确的地方。这意味着将源文件放在根目录树中,根目录为
    myproject/src
    ,核心命名空间很可能位于
    myproject/src/myu project/core.clj
    。但实际上,我已经在中解释了所有细节,所以请阅读(如果我遗漏了什么,请留下评论):-)


  • Leiningen将负责基本的项目布局,并为您设置REPL/swank/NALGUN的类路径(如果您还没有遇到后两者,您很快就会遇到——但这是一个单独的主题,我已经在一定程度上介绍了swank部分,例如),所以,希望您永远不需要手动处理
    java-cp…
    废话。(我在最后一个插入语中链接到的与swank相关的答案详细介绍了如何从Emacs中使用正确的类路径设置swank。)

    谢谢。原来我的问题是因为我是从
    project/
    内部运行的,所以我需要将
    添加到类路径中。它正在工作。顺便说一下,Vim\VimClojure.:)也许这对问题的作者有用:-介绍与Leiningen的合作