2012-10-04 84 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

相关问题