lein repl 失败,但 lein 运行 有效
lein repl fails, but lein run works
我正在尝试使用 leiningen 打开 Clojure repl。当我从项目目录中的控制台打开它时出现错误,但使用 lein run
一切正常。另外,如果我在非项目目录中启动 lein repl
,它会正常工作。
这是什么原因造成的???
$ lein repl
#error {
:cause Don't know how to create ISeq from: java.lang.Character
:via
[{:type java.lang.IllegalArgumentException
:message Don't know how to create ISeq from: java.lang.Character
:at [clojure.lang.RT seqFrom RT.java 542]}]
:trace
[[clojure.lang.RT seqFrom RT.java 542]
[clojure.lang.RT seq RT.java 523]
[clojure.core$seq__4357 invokeStatic core.clj 137]
[clojure.core$concat$fn__4446 invoke core.clj 706]
[clojure.lang.LazySeq sval LazySeq.java 40]
[clojure.lang.LazySeq seq LazySeq.java 49]
[clojure.lang.Cons next Cons.java 39]
[clojure.lang.RT boundedLength RT.java 1749]
[clojure.lang.RestFn applyTo RestFn.java 130]
[clojure.core$apply invokeStatic core.clj 648]
[clojure.core$load_libs invokeStatic core.clj 5778]
[clojure.core$load_libs doInvoke core.clj 5758]
[clojure.lang.RestFn applyTo RestFn.java 137]
[clojure.core$apply invokeStatic core.clj 648]
[clojure.core$require invokeStatic core.clj 5796]
[clojure.core$require doInvoke core.clj 5796]
[clojure.lang.RestFn invoke RestFn.java 408]
[user$eval5 invokeStatic form-init8518282048677853666.clj 1]
[user$eval5 invoke form-init8518282048677853666.clj 1]
[clojure.lang.Compiler eval Compiler.java 6927]
[clojure.lang.Compiler eval Compiler.java 6916]
[clojure.lang.Compiler eval Compiler.java 6916]
[clojure.lang.Compiler load Compiler.java 7379]
[clojure.lang.Compiler loadFile Compiler.java 7317]
[clojure.main$load_script invokeStatic main.clj 275]
[clojure.main$init_opt invokeStatic main.clj 277]
[clojure.main$init_opt invoke main.clj 277]
[clojure.main$initialize invokeStatic main.clj 308]
[clojure.main$null_opt invokeStatic main.clj 342]
[clojure.main$null_opt invoke main.clj 339]
[clojure.main$main invokeStatic main.clj 421]
[clojure.main$main doInvoke main.clj 384]
[clojure.lang.RestFn invoke RestFn.java 421]
[clojure.lang.Var invoke Var.java 383]
[clojure.lang.AFn applyToHelper AFn.java 156]
[clojure.lang.Var applyTo Var.java 700]
[clojure.main main main.java 37]]}
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.Symbol, compiling:(/tmp/form-init8518282048677853666.clj:1:73)
at clojure.lang.Compiler.load(Compiler.java:7391)
at clojure.lang.Compiler.loadFile(Compiler.java:7317)
at clojure.main$load_script.invokeStatic(main.clj:275)
at clojure.main$init_opt.invokeStatic(main.clj:277)
at clojure.main$init_opt.invoke(main.clj:277)
at clojure.main$initialize.invokeStatic(main.clj:308)
at clojure.main$null_opt.invokeStatic(main.clj:342)
at clojure.main$null_opt.invoke(main.clj:339)
at clojure.main$main.invokeStatic(main.clj:421)
at clojure.main$main.doInvoke(main.clj:384)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.Symbol
at clojure.lang.RT.invoke(RT.java:239)
at user$eval5.invokeStatic(form-init8518282048677853666.clj:1)
at user$eval5.invoke(form-init8518282048677853666.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6927)
at clojure.lang.Compiler.eval(Compiler.java:6916)
at clojure.lang.Compiler.eval(Compiler.java:6916)
at clojure.lang.Compiler.load(Compiler.java:7379)
... 14 more
Exception in thread "Thread-3" clojure.lang.ExceptionInfo: Subprocess failed {:exit-code 1}
at clojure.core$ex_info.invokeStatic(core.clj:4617)
at clojure.core$ex_info.invoke(core.clj:4617)
at leiningen.core.eval$fn__5732.invokeStatic(eval.clj:264)
at leiningen.core.eval$fn__5732.invoke(eval.clj:260)
at clojure.lang.MultiFn.invoke(MultiFn.java:233)
at leiningen.core.eval$eval_in_project.invokeStatic(eval.clj:366)
at leiningen.core.eval$eval_in_project.invoke(eval.clj:356)
at leiningen.repl$server$fn__11838.invoke(repl.clj:243)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invokeStatic(core.clj:646)
at clojure.core$with_bindings_STAR_.invokeStatic(core.clj:1881)
at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1881)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invokeStatic(core.clj:650)
at clojure.core$bound_fn_STAR_$fn__4671.doInvoke(core.clj:1911)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.run(AFn.java:22)
at java.lang.Thread.run(Unknown Source)
REPL server launch timed out
这是我的实际 core.clj 文件:
(ns app.core)
(defn gcd
([b c] (gcd b c b c))
([b c d e]
(cond (> b c) (recur (- b c) c d e)
(< b c) (recur b (- c b) d e)
:else (println b (/ b d) (/ b e)))))
(defn -main [& args]
(gcd 164642622978589800 78499828003450)
)
这是我的 project.clj 文件:
(defproject app "0.1.0-SNAPSHOT"
:main "app.core"
:description "First Application"
:url ""
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.8.0"]]
)
2 个问题:
您需要在 ns
宏中使用 gen-class
指令。这应该导致您的 lein run
失败(没有它对我来说失败了)。注意:在评论中,Arthur 说在这种情况下没有必要。我认为他更权威,所以看起来没有必要。我得到的错误一定是由于我的 IDE。我认为这是一个 "entry point" 错误,因为我不记得消息的确切内容。
(你的主要问题)在project.clj
中,你使用了一个字符串来表示主要问题。 Clojure 期望它是一个符号。
(ns app.core
(:gen-class)) ; 1.
(defn gcd
([b c] (gcd b c b c))
([b c d e]
(cond (> b c) (recur (- b c) c d e)
(< b c) (recur b (- c b) d e)
:else (println b (/ b d) (/ b e)))))
(defn -main [& args]
(gcd 164642622978589800 78499828003450))
Project.clj:
(defproject app "0.1.0-SNAPSHOT"
:main app.core ; 2.
:description "First Application"
:url ""
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.8.0"]])
我正在尝试使用 leiningen 打开 Clojure repl。当我从项目目录中的控制台打开它时出现错误,但使用 lein run
一切正常。另外,如果我在非项目目录中启动 lein repl
,它会正常工作。
这是什么原因造成的???
$ lein repl
#error {
:cause Don't know how to create ISeq from: java.lang.Character
:via
[{:type java.lang.IllegalArgumentException
:message Don't know how to create ISeq from: java.lang.Character
:at [clojure.lang.RT seqFrom RT.java 542]}]
:trace
[[clojure.lang.RT seqFrom RT.java 542]
[clojure.lang.RT seq RT.java 523]
[clojure.core$seq__4357 invokeStatic core.clj 137]
[clojure.core$concat$fn__4446 invoke core.clj 706]
[clojure.lang.LazySeq sval LazySeq.java 40]
[clojure.lang.LazySeq seq LazySeq.java 49]
[clojure.lang.Cons next Cons.java 39]
[clojure.lang.RT boundedLength RT.java 1749]
[clojure.lang.RestFn applyTo RestFn.java 130]
[clojure.core$apply invokeStatic core.clj 648]
[clojure.core$load_libs invokeStatic core.clj 5778]
[clojure.core$load_libs doInvoke core.clj 5758]
[clojure.lang.RestFn applyTo RestFn.java 137]
[clojure.core$apply invokeStatic core.clj 648]
[clojure.core$require invokeStatic core.clj 5796]
[clojure.core$require doInvoke core.clj 5796]
[clojure.lang.RestFn invoke RestFn.java 408]
[user$eval5 invokeStatic form-init8518282048677853666.clj 1]
[user$eval5 invoke form-init8518282048677853666.clj 1]
[clojure.lang.Compiler eval Compiler.java 6927]
[clojure.lang.Compiler eval Compiler.java 6916]
[clojure.lang.Compiler eval Compiler.java 6916]
[clojure.lang.Compiler load Compiler.java 7379]
[clojure.lang.Compiler loadFile Compiler.java 7317]
[clojure.main$load_script invokeStatic main.clj 275]
[clojure.main$init_opt invokeStatic main.clj 277]
[clojure.main$init_opt invoke main.clj 277]
[clojure.main$initialize invokeStatic main.clj 308]
[clojure.main$null_opt invokeStatic main.clj 342]
[clojure.main$null_opt invoke main.clj 339]
[clojure.main$main invokeStatic main.clj 421]
[clojure.main$main doInvoke main.clj 384]
[clojure.lang.RestFn invoke RestFn.java 421]
[clojure.lang.Var invoke Var.java 383]
[clojure.lang.AFn applyToHelper AFn.java 156]
[clojure.lang.Var applyTo Var.java 700]
[clojure.main main main.java 37]]}
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.Symbol, compiling:(/tmp/form-init8518282048677853666.clj:1:73)
at clojure.lang.Compiler.load(Compiler.java:7391)
at clojure.lang.Compiler.loadFile(Compiler.java:7317)
at clojure.main$load_script.invokeStatic(main.clj:275)
at clojure.main$init_opt.invokeStatic(main.clj:277)
at clojure.main$init_opt.invoke(main.clj:277)
at clojure.main$initialize.invokeStatic(main.clj:308)
at clojure.main$null_opt.invokeStatic(main.clj:342)
at clojure.main$null_opt.invoke(main.clj:339)
at clojure.main$main.invokeStatic(main.clj:421)
at clojure.main$main.doInvoke(main.clj:384)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.Symbol
at clojure.lang.RT.invoke(RT.java:239)
at user$eval5.invokeStatic(form-init8518282048677853666.clj:1)
at user$eval5.invoke(form-init8518282048677853666.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6927)
at clojure.lang.Compiler.eval(Compiler.java:6916)
at clojure.lang.Compiler.eval(Compiler.java:6916)
at clojure.lang.Compiler.load(Compiler.java:7379)
... 14 more
Exception in thread "Thread-3" clojure.lang.ExceptionInfo: Subprocess failed {:exit-code 1}
at clojure.core$ex_info.invokeStatic(core.clj:4617)
at clojure.core$ex_info.invoke(core.clj:4617)
at leiningen.core.eval$fn__5732.invokeStatic(eval.clj:264)
at leiningen.core.eval$fn__5732.invoke(eval.clj:260)
at clojure.lang.MultiFn.invoke(MultiFn.java:233)
at leiningen.core.eval$eval_in_project.invokeStatic(eval.clj:366)
at leiningen.core.eval$eval_in_project.invoke(eval.clj:356)
at leiningen.repl$server$fn__11838.invoke(repl.clj:243)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invokeStatic(core.clj:646)
at clojure.core$with_bindings_STAR_.invokeStatic(core.clj:1881)
at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1881)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invokeStatic(core.clj:650)
at clojure.core$bound_fn_STAR_$fn__4671.doInvoke(core.clj:1911)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.run(AFn.java:22)
at java.lang.Thread.run(Unknown Source)
REPL server launch timed out
这是我的实际 core.clj 文件:
(ns app.core)
(defn gcd
([b c] (gcd b c b c))
([b c d e]
(cond (> b c) (recur (- b c) c d e)
(< b c) (recur b (- c b) d e)
:else (println b (/ b d) (/ b e)))))
(defn -main [& args]
(gcd 164642622978589800 78499828003450)
)
这是我的 project.clj 文件:
(defproject app "0.1.0-SNAPSHOT"
:main "app.core"
:description "First Application"
:url ""
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.8.0"]]
)
2 个问题:
您需要在
ns
宏中使用gen-class
指令。这应该导致您的lein run
失败(没有它对我来说失败了)。注意:在评论中,Arthur 说在这种情况下没有必要。我认为他更权威,所以看起来没有必要。我得到的错误一定是由于我的 IDE。我认为这是一个 "entry point" 错误,因为我不记得消息的确切内容。(你的主要问题)在
project.clj
中,你使用了一个字符串来表示主要问题。 Clojure 期望它是一个符号。
(ns app.core
(:gen-class)) ; 1.
(defn gcd
([b c] (gcd b c b c))
([b c d e]
(cond (> b c) (recur (- b c) c d e)
(< b c) (recur b (- c b) d e)
:else (println b (/ b d) (/ b e)))))
(defn -main [& args]
(gcd 164642622978589800 78499828003450))
Project.clj:
(defproject app "0.1.0-SNAPSHOT"
:main app.core ; 2.
:description "First Application"
:url ""
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.8.0"]])