2012-05-20 71 views
4

我完全不熟悉clojure,并且我有我正在尝试构建的项目的源代码。该项目有一个project.clj文件,谷歌说,意味着我应该使用lein构建工具。但是:使用lein构建clojure项目出错

$ lein compile #lein jar does the same thing 
Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: Could not locate testui/core__init.class oCompiling testui.core 
r testui/core.clj on classpath 

我怀疑project.clj可能被破坏。 core.clj被放在src/COM/foodient/semanticanalysis/testui和project.clj看起来是这样的:

(defproject testui "1.0.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :dependencies [[org.clojure/clojure "1.3.0"] 
       [org.apache.poi/poi "3.8-beta4"] 
       [gate-clj "1.0.0"]] 
    :aot [testui.core] 
    :main testui.core 
    :run-aliases {:test testui.core/-main}) 

任何想法?

回答

4

如果您建立了一个lein项目并且名称中包含Clojuristic破折号,就像bene-csv(我的一个),然后lein new bene-csv创建了几个目录并且./bene-csv/project.clj。我的core.clj位于./bene-csv/src/bene_csv/core.clj。请注意,短划线在bene_csv中下降,以支持下划线。

至于你的问题,可能core.clj不是位于lein期望的地方,应该是./testui/src/testui/core.clj。我希望这有帮助。

+0

谢谢,这工作。我现在已经与另一个文件有同样的错误,但我认为我可以用同样的方法修复它。 – jjm

3

我认为问题是core.clj不在正确的目录中。它应该在src/testui目录中。

3

我的猜测是,你应该从

testui.core 

改变

com.foodient.semanticanalysis.testui.core 

它的原因是,一个命名空间的最后一个点之前的部分对应于一个包到您的代码引用名称(这个词来自java和jvm)

你表明你的来源是在:

src/com/foodient/semanticanalysis/testui 

所以包名是com.foodient.semanticanalysis.testui

你或许应该也更新您的Clojure源文件到本公约一致的命名空间声明(或移动您的源src/testui)。

希望它有帮助。