【发布时间】:2021-04-10 11:36:48
【问题描述】:
我查看了有关堆栈溢出的所有类似问题。这一个是不同的足以保证一个单独的问题。基本上,我无法启动 repl 服务器,因为我收到以下错误。有人指出,这通常是一个依赖问题,但据我所知,我已经更新了。我在这里做错了什么?这是完整的错误:
error in process sentinel: Could not start nREPL server: java.lang.NumberFormatException: Invalid number: 0.8.3
at clojure.lang.LispReader.readNumber (LispReader.java:352)
clojure.lang.LispReader.read (LispReader.java:278)
clojure.lang.LispReader.readDelimitedList (LispReader.java:1398)
clojure.lang.LispReader$VectorReader.invoke (LispReader.java:1347)
clojure.lang.LispReader.read (LispReader.java:285)
clojure.lang.LispReader.read (LispReader.java:216)
clojure.lang.LispReader.read (LispReader.java:205)
clojure.lang.RT.readString (RT.java:1878)
clojure.lang.RT.readString (RT.java:1873)
clojure.core$read_string.invokeStatic (core.clj:3815)
clojure.core$read_string.invoke (core.clj:3805)
clojure.core$mapv$fn__8445.invoke (core.clj:6912)
clojure.core.protocols$fn__8159.invokeStatic (protocols.clj:168)
clojure.core.protocols/fn (protocols.clj:124)
clojure.core.protocols$fn__8114$G__8109__8123.invoke (protocols.clj:19)
clojure.core.protocols$seq_reduce.invokeStatic (protocols.clj:31)
clojure.core.protocols$fn__8146.invokeStatic (protocols.clj:75)
clojure.core.protocols/fn (protocols.clj:75)
clojure.core.protocols$fn__8088$G__8083__8101.invoke (protocols.clj:13)
clojure.core$reduce.invokeStatic (core.clj:6828)
clojure.core$mapv.invokeStatic (core.clj:6903)
clojure.core$mapv.invoke (core.clj:6903)
leiningen.update_in$parse_args.invokeStatic (update_in.clj:13)
leiningen.update_in$parse_args.invoke (update_in.clj:9)
leiningen.update_in$update_in.invokeStatic (update_in.clj:36)
leiningen.update_in$update_in.doInvoke (update_in.clj:24)
clojure.lang.RestFn.applyTo (RestFn.java:146)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:660)
leiningen.core.main$partial_task$fn__7331.doInvoke (main.clj:284)
clojure.lang.RestFn.applyTo (RestFn.java:139)
clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:660)
leiningen.core.main$apply_task.invokeStatic (main.clj:334)
leiningen.core.main$apply_task.invoke (main.clj:320)
leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:343)
leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
leiningen.core.main$_main$fn__7420.invoke (main.clj:453)
leiningen.core.main$_main.invokeStatic (main.clj:442)
leiningen.core.main$_main.doInvoke (main.clj:439)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:665)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)
编辑:
所以我在这个问题上已经走得更远了,我想我要解决最后一两个小问题了。导致 java.lang.NumberFormatException 的文件是 cider.el,您可以在 emacs.emacs.d\elpa\cider-[版本号,在我的情况下为 20210104.915] 中找到它。你打开你的 cider.el 文件,在第 392/393 行,在这个版本中,你会发现:
(cider-add-to-alist 'cider-jack-in-dependencies "nrepl/nrepl" "0.8.3")
所以更改这一行,重新编译它,然后重新加载 emacs 得到抛出 java.lang.NumberFormatException 的数字以更改为我更改的任何内容(使用 byte-compile-file 重新编译,按回车键,然后将地址传递给它文件)。添加另一组双引号会得到一个空值错误(显然)并且对异常和排序进行任何类型的反斜杠似乎并不能解决问题。所以,由于一些相关的帖子(虽然细节少得多)似乎暗示要更改版本号,我将不得不假设我必须这样做。哪个版本号在这里最适合?
到目前为止的临时解决方案:
在命令行中使用“lein repl”启动一个repl,并使用连接命令“cider-connect”手动连接它并指定本地主机(我在与项目相同的目录中启动了repl,它很容易检测到它)。作为一个永久的解决方案,这对我来说还不够好,但会让我暂时起床,直到找到更好的解决方案。
永久解决方案:
见下文
【问题讨论】:
-
看起来你写了
0.8.3,其中需要一个字符串(如"0.8.3")? -
它可能是由 leiningen 或类似的东西自动生成的,我在哪里可以找到 0.8.3 来更改它?
-
project.clj 或 ~/.lein/profiles.clj -- 如果可能在 emacs 配置中(我不使用 emacs,所以我不知道设置);如果有疑问,请先 grep 获取项目中的数字。
-
所以我可以投票,你能把你的解决方案作为答案吗?
-
亚伦·贝尔,你太客气了。我已经按照你的要求做了。
标签: emacs clojure dependencies lisp read-eval-print-loop