1

这是我失败的秘诀:

lein new pedestal-app 生成应用

然后我将 project.clj 修改为以下内容:

(defproject generative-app "0.0.1-SNAPSHOT"
  :description "FIXME: write description"
  :repl-options {:init (use 'dev)}
  :dependencies [[org.clojure/test.generative "0.4.0"]
                 [org.clojure/clojure "1.5.1"]
                 [org.clojure/clojurescript "0.0-1586"]
                 [domina "1.0.1"]
                 [ch.qos.logback/logback-classic "1.0.7" :exclusions [org.slf4j/slf4j-api]]
                 [io.pedestal/pedestal.app "0.1.10"]
                 [io.pedestal/pedestal.app-tools "0.1.10"]]
  :profiles {:dev {:source-paths ["dev"]}}
  :min-lein-version "2.0.0"
  :source-paths ["app/src" "app/templates"]
  :resource-paths ["config"]
  :target-path "out/"
  :aliases {"dumbrepl" ["trampoline" "run" "-m" "clojure.main/main"]})

基本上,我添加test.generative并使其(use 'dev)在启动时执行。

然后我进入项目并输入lein repl,我收到错误:

Exception in thread "main" java.io.FileNotFoundException: Could not locate clojure/tools/namespace/find__init.class or clojure/tools/namespace/find.clj on classpath: 
....
at io.pedestal.app_tools.server$eval3008$loading__4910__auto____3009.invoke(server.clj:12)
....
at dev$eval1071$loading__4910__auto____1072.invoke(dev.clj:1)

显然,当(use 'dev)运行时,有些事情会变得混乱。我真的不知道是什么。

如果有人想尝试一下,我把上面的步骤放到一个项目中,地址是 git@github.com:samedhi/generation-app.git,所以你可以简单地

> git clone git@github.com:samedhi/generative-app.git
> cd generative-app
> lein repl

谢谢你的帮助。

4

1 回答 1

1

错误来自 clojure.tools.namespace。

运行lein deps :tree以显示依赖关系树 - 在这种情况下,相关位是:

[io.pedestal/pedestal.app-tools "0.1.11-20130719.140954-2"]
   [org.clojure/tools.namespace "0.2.1"]

[org.clojure/test.generative "0.4.0"]
  [org.clojure/tools.namespace "0.1.1"]

您可以看到冲突 -test.generative 0.4.0取决于早期版本的tools.namespace.

将排除项添加到您的相关行project.clj

[org.clojure/test.generative "0.4.0" :exclusions [org.clojure/tools.namespace]]

这将使项目编译,您可以运行(use dev)(start)正常运行。但是,在排除 后tools.namespace 0.1.1,test.generation 将不再起作用(如果它依赖于已存在但tools.namespace 0.1.1随后被弃用的函数)。希望一切都会好起来,但如果没有,您可能需要等待test.generative赶上更高版本的tools.namespace.

于 2013-08-16T07:59:12.050 回答