2016-04-03 61 views
0

昨天開始使用Clojure。 我不能讓周圍的模塊系統是如何工作的:澄清在包中使用ns

  1. 我已經安裝了草書
  2. 我創建了一個項目之後的leiningen模板
  3. 我有兩個Clojure的文件/src/clojure_first_steps

core.clj

(ns clojure-first-steps.core) 
(:require [clojure-first-steps.utils :refer :all]) 

(defn run-other-foo 
    (foo-2 ["hello"])) 

utils.clj

(ns clojure-first-steps.utils) 

(defn foo-2 [x] (x)) 

雖然 'LEIN編譯' 沒有probs運行, 'LEIN測試' 編譯失敗上 (:require [clojure-first-steps.utils :refer :all]),測試之中:

(ns clojure-first-steps.core-test 
    (:require [clojure.test :refer :all] 
      [clojure-first-steps.core :refer :all])) 

(deftest a-test 
    (testing "I can access dependecies from another module" 
    (is (= "hello" (run-other-foo))))) 

該錯誤消息是java.lang.ClassNotFoundException: clojure-first-steps.utils

編輯:項目樹

. 
├── CHANGELOG.md 
├── clojure_first_steps.iml 
├── doc 
│   └── intro.md 
├── LICENSE 
├── project.clj 
├── README.md 
├── resources 
├── src 
│   ├── clojure_first_steps 
│   │   ├── core.clj 
│   │   └── utils.clj 
├── target 
│   ├── classes 
│   │   └── META-INF 
│   │    └── maven 
│   │     └── clojure_first_steps 
│   │      └── clojure_first_steps 
│   │       └── pom.properties 
│   ├── repl-port 
│   └── stale 
│    └── leiningen.core.classpath.extract-native-dependencies 
└── test 
    ├── clojure_first_steps 
    │   └── core_test.clj 
+0

你可以在項目目錄中顯示'tree .'的輸出嗎? –

回答

2

在你的core.clj中:

(ns clojure-first-steps.core) (:require [clojure-first-steps.utils :refer :all])

這是不正確的 - (:require)條款需要是ns宏內部。因爲它不是,查找向量中的符號(顯然沒有找到)。

(ns clojure-first-steps.core 
    (:require [clojure-first-steps.utils :refer :all])) 

這告訴Clojure的編譯器加載clojure-first-steps.utils(若沒有的話),並指這是在新創建的命名空間定義。