我对clojure一点也不熟悉,而且我有一个我正在尝试构建的项目的源代码。该项目有一个project.clj文件,谷歌说这意味着我应该使用lein构建工具。 然而:
$ 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})
有什么想法吗?
如果您设置了一个 lein 项目并且名称中包含 Clojuristic 破折号,例如 bene-csv(我的一个(,那么 lein new bene-csv 会创建多个目录并./bene-csv/project.clj
。我的核心.clj位于./bene-csv/src/bene_csv/core.clj
。请注意,破折号在bene_csv
中被丢弃,取而代之的是下划线。
至于你的问题很可能 core.clj 不在 lein 期望的地方,这应该./testui/src/testui/core.clj
。我希望这有所帮助。
问题是core.clj不在正确的目录中。它应该在 src/testui 目录中。
我的猜测是你应该把对代码的引用从
testui.core
自
com.foodient.semanticanalysis.testui.core
原因是最后一个点之前的命名空间部分对应于包名称(该术语来自java和jvm(
您指出您的来源位于:
src/com/foodient/semanticanalysis/testui
所以包名称是com.foodient.semanticanalysis.testui
您可能还应该更新 clojure 源文件中的命名空间声明以匹配此约定(或将源移动到 src/testui
(。
希望对您有所帮助。