<p>cider-jack-in 启动服务器时出错</p>

创建于 2019-02-12  ·  6评论  ·  资料来源: clojure-emacs/cider

预期行为

使用cider-jack-in ,我希望 nREPL 服务器启动并加载我的命名空间。

实际行为

nREPL 服务器已加载,但连接到默认的user命名空间,出现以下错误

;; Connected to nREPL server - nrepl://localhost:51153
;; CIDER 0.21.0snapshot (package: 20190212.1312), nREPL 0.6.0
;; Clojure 1.10.0, Java 1.8.0_144
;;     Docs: (doc function-name)
;;           (find-doc part-of-name)
;;   Source: (source function-name)
;;  Javadoc: (javadoc java-object-or-class)
;;     Exit: <C-c C-q>
;;  Results: Stored in vars *1, *2, *3, an exception in *e;
ERROR: Unhandled REPL handler exception processing message {:op version, :prefix-rewriting false, :debug false, :session 8461f0f5-b998-4108-a56a-19e205dada4a, :id 12}
java.lang.IllegalArgumentException: No implementation of method: :send of protocol: #'clojure.tools.nrepl.transport/Transport found for class: nrepl.transport.FnTransport
    at clojure.core$_cache_protocol_fn.invokeStatic(core_deftype.clj:583)
    at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:575)
    at clojure.tools.nrepl.transport$eval18834$fn__18835$G__18825__18842.invoke(transport.clj:16)
    at refactor_nrepl.middleware$version_reply.invokeStatic(middleware.clj:144)
    at refactor_nrepl.middleware$version_reply.invoke(middleware.clj:143)
    at refactor_nrepl.middleware$wrap_refactor$fn__26537.invoke(middleware.clj:214)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__19104.invoke(middleware.clj:22)
    at nrepl.server$handle_STAR_.invokeStatic(server.clj:18)
    at nrepl.server$handle_STAR_.invoke(server.clj:15)
    at nrepl.server$handle$fn__21179.invoke(server.clj:27)
    at clojure.core$binding_conveyor_fn$fn__5739.invoke(core.clj:2030)
    at clojure.lang.AFn.call(AFn.java:18)
    at java.util.concurrent.Fut
ureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
user> 

重现问题的步骤

  1. 打开一个clojure项目
  2. 运行cider-jack-in

环境 & 版本信息

CIDER 版本信息

;; CIDER 0.21.0snapshot (package: 20190212.1312), nREPL 0.6.0
;; Clojure 1.10.0, Java 1.8.0_144

Emacs 版本

Emacs 26.1

操作系统

OS X 10.14“macOS Mojave”

最有用的评论

您的所有堆栈跟踪都包括: #'clojure.tools.nrepl.transport/Transport 。 Lein 版本 2.8.3 和 2.9.0 与任何旧版本的 tools.nrepl 都不兼容,并已切换到 nrepl/nrepl。 检查你的类路径和 deps 是否有任何引入这个旧依赖的东西,看看你是否可以轻松地将东西撞到 unreal 0.6.0(如果使用 lein 2.9.0)或 nrepl 0.5.0(如果使用精益 2.8.3)

所有6条评论

此外,当我在任何 clojure 命名空间中使用<any-ns>/ (即任何命名空间后跟/ )时,这也会导致问题。 它挂起一段时间,然后在 nREPL 上抛出上述错误。

在 clj 文件中输入

(def test (foo/))

错误:

ERROR: Unhandled REPL handler exception processing message {:op namespace-aliases, :prefix-rewriting false, :debug false, :session 8461f0f5-b998-4108-a56a-19e205dada4a, :id 26}
java.lang.IllegalArgumentException: No implementation of method: :send of protocol: #'clojure.tools.nrepl.transport/Transport found for class: nrepl.transport.FnTransport
    at clojure.core$_cache_protocol_fn.invokeStatic(core_deftype.clj:583)
    at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:575)
    at clojure.tools.nrepl.transport$eval18834$fn__18835$G__18825__18842.invoke(transport.clj:16)
    at refactor_nrepl.middleware$namespace_aliases_reply.invokeStatic(middleware.clj:181)
    at refactor_nrepl.middleware$namespace_aliases_reply.invoke(middleware.clj:180)
    at refactor_nrepl.middleware$wrap_refactor$fn__26537.invoke(middleware.clj:214)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__19104.invoke(middleware.clj:22)
    at nrepl.server$handle_STAR_.invokeStatic(server.clj:18)
    at nrepl.server$handle_STAR_.invoke(server.clj:15)
    at nrepl.server$handle$fn__21179.invoke(server.clj:27)
    at clojure.core$binding_conveyor_fn$fn__5739.invoke(core.clj:2030)
    at clojure.lang.AFn.call(AFn.java:18)
    at java
.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

除了当我输入名称空间/别名后跟/甚至只是/时出现错误和几秒钟的等待之外,一切似乎都运行良好。

自从我升级苹果酒后,这种情况就开始发生了。 这发生在我身上0.20.0以及最新的20190212.1312

这是clj-refactor与最新苹果酒版本不兼容的问题吗? 我想我必须在那里提出这个问题。

clj-refactor似乎一切正常。

您的所有堆栈跟踪都包括: #'clojure.tools.nrepl.transport/Transport 。 Lein 版本 2.8.3 和 2.9.0 与任何旧版本的 tools.nrepl 都不兼容,并已切换到 nrepl/nrepl。 检查你的类路径和 deps 是否有任何引入这个旧依赖的东西,看看你是否可以轻松地将东西撞到 unreal 0.6.0(如果使用 lein 2.9.0)或 nrepl 0.5.0(如果使用精益 2.8.3)

我会尝试并测试它。

更新到 nrepl 似乎解决了这个问题。 谢谢@dpsutton。

此页面是否有帮助?
0 / 5 - 0 等级