2012-05-20 98 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)。

希望它有幫助。