具有Compojure的Heroku部署错误:“找不到leiningen / core / classpath__init.class”

时间:2013-06-25 03:10:20

标签: heroku clojure web-deployment compojure

我重构了我的轻量级网络应用,现在使用 Compojure 。一切都在当地很好。但是,当我部署到 Heroku 时出现问题。我正在尝试使用lein ring server-headless $PORT运行它,但我收到以下错误。由于 this issue ,我的Procfile为web: lein ring server-headless $PORT。但仍然没有运气。有任何想法吗?


    2013-06-25T02:38:15.671118+00:00 heroku[web.1]: Starting process with command `lein ring server-headless 17731`
    2013-06-25T02:38:16.350715+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true -Djava.rmi.server.useCodebaseOnly=true
    2013-06-25T02:38:19.684531+00:00 app[web.1]:    at clojure.lang.Compiler.eval(Compiler.java:5440)
    2013-06-25T02:38:19.683953+00:00 app[web.1]: Exception in thread "main" java.io.FileNotFoundException: Could not locate leiningen/core/classpath__init.class or leiningen/core/classpath.clj on classpath:  (server.clj:1)
    2013-06-25T02:38:19.685445+00:00 app[web.1]:    at clojure.lang.RT.load(RT.java:381)
    2013-06-25T02:38:19.684682+00:00 app[web.1]:    at clojure.lang.Compiler.eval(Compiler.java:5415)
    2013-06-25T02:38:19.684956+00:00 app[web.1]:    at clojure.lang.RT.loadResourceScript(RT.java:340)
    2013-06-25T02:38:19.685581+00:00 app[web.1]:    at clojure.core$load$fn__4519.invoke(core.clj:4915)
    2013-06-25T02:38:19.684821+00:00 app[web.1]:    at clojure.lang.Compiler.load(Compiler.java:5857)
    2013-06-25T02:38:19.685221+00:00 app[web.1]:    at clojure.lang.RT.load(RT.java:409)
    2013-06-25T02:38:19.685714+00:00 app[web.1]:    at clojure.core$load.doInvoke(core.clj:4914)
    2013-06-25T02:38:19.685976+00:00 app[web.1]:    at clojure.core$load_one.invoke(core.clj:4729)
    2013-06-25T02:38:19.686270+00:00 app[web.1]:    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    2013-06-25T02:38:19.685089+00:00 app[web.1]:    at clojure.lang.RT.loadResourceScript(RT.java:331)
    2013-06-25T02:38:19.686403+00:00 app[web.1]:    at clojure.core$apply.invoke(core.clj:542)
    2013-06-25T02:38:19.685846+00:00 app[web.1]:    at clojure.lang.RestFn.invoke(RestFn.java:408)
    2013-06-25T02:38:19.686106+00:00 app[web.1]:    at clojure.core$load_lib.doInvoke(core.clj:4766)
    2013-06-25T02:38:19.686587+00:00 app[web.1]:    at clojure.core$load_libs.doInvoke(core.clj:4800)
    2013-06-25T02:38:19.686727+00:00 app[web.1]:    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    2013-06-25T02:38:19.686860+00:00 app[web.1]:    at clojure.core$apply.invoke(core.clj:544)
    2013-06-25T02:38:19.687027+00:00 app[web.1]:    at clojure.core$use.doInvoke(core.clj:4892)
    2013-06-25T02:38:19.687158+00:00 app[web.1]:    at clojure.lang.RestFn.invoke(RestFn.java:551)
    2013-06-25T02:38:19.687292+00:00 app[web.1]:    at leiningen.ring$eval68$loading__4414__auto____69.invoke(ring.clj:1)
    2013-06-25T02:38:19.687425+00:00 app[web.1]:    at leiningen.ring$eval68.invoke(ring.clj:1)
    2013-06-25T02:38:19.687557+00:00 app[web.1]:    at clojure.lang.Compiler.eval(Compiler.java:5424)
    ...

1 个答案:

答案 0 :(得分:4)

好的,这个问题在几个地方出现了。 This post(和this one)提供了丰富的信息。

我基本上偶然发现了Heroku Buildpack: Clojure。这给出了一些有趣的配置方向。具体来说,我不得不

  • 设置最小lein版本。 :min-lein-version "2.0.0"
  • 需要JDK 7和echo "java.runtime.version=1.7" > system.properties
  • 添加了环servlet lib:[ring/ring-servlet "1.2.0-RC1"]

现在一切都是复制的。希望这有助于某人。