2012-10-04 82 views
4

我想在Windows 7上設置lein構建環境,避免在Linux上從成功的構建環境複製文件。我有maven和與lein一起安裝的jdk。爲什麼Java會抱怨沒有找到名稱空間?

HOME指向c:\Users\cnorton maven目錄所在的位置。

我試圖運行lein repl或lein compile時出現這個錯誤,並且無法弄清楚我做錯了什麼。

產生的原因:java.lang.Exception的:命名空間 'REPL-test.core' 裝載 '/ repl_test /核心'

這裏後,沒有發現被project.clj

(defproject repl-test "0.0.1-SNAPSHOT" 
    :description "TODO: add summary of your project" 
    :dependencies [[org.clojure/clojure "1.4.0"] 
       [org.clojure/clojure-contrib "1.2.0"] 
       [clojure-csv/clojure-csv "1.2.4"] 
       [org.clojure/tools.cli "0.1.0"] 
       [clj-http "0.1.3"]] 
    :aot [repl-test.core] 
    :main repl-test.core) 

這裏是SRC/repl_test的第一部分/ core.clj

(ns repl-test.core 
    (:gen-class) 
    (:use clojure.contrib.command-line) 
    (:require [clojure.contrib.string :as cstr]) 
    (:require [clojure.contrib.trace :as ctr]) 
    (:require [clojure.string :as sstr]) 
    (:use clojure-csv.core)) 

我是超級有益的,如果有人可以張貼作爲回答的project.clj和core.clj,使該項目成爲一個主要的標題。

+0

你有意使用1.2的clojure-contrib庫嗎?是HOME env變量集? –

+0

我可以刪除clojure-contrib,並且只設置JAVA_HOME。我會去看HOME的設置。 – octopusgrabbus

+0

在freenode上#clojure上可以獲得更多交互式幫助 –

回答

6

我會避免在您的文件夾名稱和命名空間中的「 - 」,它實際上轉換爲「_」,但不是在所有地方。

以下可能會或可能不會爲您工作。我收到了你的框架項目工作:

(defproject st1 "1.0.0-SNAPSHOT" 
:description "TODO: add summary of your project" 
    :dependencies [[org.clojure/clojure "1.4.0"] 
       [org.clojure/clojure-contrib "1.2.0"] 
       [clojure-csv/clojure-csv "1.2.4"] 
       [org.clojure/tools.cli "0.1.0"] 
       [clj-http "0.1.3"]] 
       :aot [repl_test.core] 
       :main repl_test.core) 

,你有相同的CLJ文件:

(ns repl_test.core 
    (:gen-class) 
    (:use clojure.contrib.command-line) 
    (:require [clojure.contrib.string :as cstr]) 
    (:require [clojure.contrib.trace :as ctr]) 
    (:require [clojure.string :as sstr]) 
    (:use clojure-csv.core)) 

而且我重命名的文件REPL測試repl_test帶下劃線。

然後

lein compile 

lein run 

出於好奇,我也看着clojure-csv,他們正在使用「 - 」無處不在,除了在文件夾名稱,所以可能有運氣複製什麼他們做到了。

此外,引用的命名空間的Clojure another SO question

「另外請注意,你不可以使用命名空間的名稱下劃線或文件名中的連字符和無論你在一個命名空間名稱使用連字符,則必須使用在文件名中加下劃線(以便ns my.cool-project在名爲cool_project.clj的文件中名爲my的目錄中定義)。「

而且從Clojure Programming Wiki部分的Java包: 「Clojure的尊重目錄和文件的Java命名慣例,但Lisp的命名慣例命名空間名稱,這樣一個Clojure的命名空間com.my-app.utils將生活在一個名爲路徑。 com/my_app/utils.clj。特別注意下劃線/連字符的區別。「

+0

我嘗試了你的建議,並編譯了相同的錯誤。我對project.clj項目名稱,core.clj ns名稱和文件夾名稱仍有點困惑。不會:aot也指repl_test,並且'st1'不會在某處被引用? – octopusgrabbus

+0

我認爲這將有助於解釋爲什麼在命名空間中使用'-'或'_'會導致問題。 –

+0

@MattFenwick clojure-csv中有一個破折號。它是如何構建的?那是在哪個平臺上?我會盡力找出答案。 – octopusgrabbus

相關問題