【问题标题】:error in process sentinel: Could not start nREPL server: java.lang.NumberFormatException: Invalid number进程前哨错误:无法启动 nREPL 服务器:java.lang.NumberFormatException:无效号码
【发布时间】: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


【解决方案1】:

查看您的依赖项。我遇到了一个问题,我的 java jdk 基本上被破坏了(就代码而言,java 的错,不是我的错)。我最终使用了最新的 OpenJDK(第 15 号)。那行得通。如果您收到很多特定于 java 的类型错误,并且这些错误会随着您使用的版本而变化,那么请考虑更新您的 java jdk。我之前使用的是 LTE 版本,最新版本已修复。

【讨论】:

  • 这对我不起作用。我必须将依赖项和插件添加到我的profiles.clj,然后禁用 Emacs 中的“Cider Inject Dependencies At Jack In”设置。这样,它执行了一个简单的“lein”命令,而不尝试注入依赖项,而是从我的配置文件中获取它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 2018-11-22
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多