我试图用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$1.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"]]
)
答案 0 :(得分:1)
2个问题:
您需要Child(int a, int b) {
super(a, b);
}
宏中的gen-class
指令。这应该会导致你的ns
失败(没有它我就失败了)。注意:在评论中,Arthur表示在这种情况下没有必要。我认为他更具权威性,所以看起来没有必要。我得到的错误肯定是由于我的IDE。我认为这是一个&#34;切入点&#34;错误,因为我无法记住消息的确切内容。
(您的主要问题)在lein run
中,您使用字符串表示主要问题。 Clojure希望它将成为一种象征。
project.clj
Project.clj:
(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))