clojure - 将 Lighttable 与远程 nrepl 结合使用

标签 clojure lighttable nrepl

我想从代码启动 nREPL 并让 Lighttable 连接到它。这是我的尝试:

(ns test
  (:require [clojure.tools.nrepl.server :refer [start-server default-handler]]
            [lighttable.nrepl.handler :refer [lighttable-ops]])
  (:gen-class))

(defn -main
  [& args]
  (start-server :port 8888
                :handler (default-handler lighttable-ops)))

但是,当我从 Lighttable 连接时,我得到以下信息:

Jun 19, 2014 5:30:23 PM clojure.tools.nrepl.server invoke0
SEVERE: Unhandled REPL handler exception processing message {:data {:settings {:name "localhost:8888", :remote true, :client-id 67}}, :id 67, :op client.init, :session c4f51394-135e-4579-b367-a69bdcdef15e}
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.Atom
  at clojure.core$swap_BANG_.doInvoke(core.clj:2235)
  at clojure.lang.RestFn.invoke(RestFn.java:529)
  at lighttable.nrepl.handler$lighttable_ops$fn__6452.invoke(handler.clj:45)
  at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__491.invoke(middleware.clj:17)
  at clojure.tools.nrepl.server$handle_STAR_.invoke(server.clj:18)
  at clojure.tools.nrepl.server$handle$fn__803.invoke(server.clj:27)
  at clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1910)
  at clojure.lang.AFn.call(AFn.java:18)
  at java.util.concurrent.FutureTask.run(FutureTask.java:262)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  at java.lang.Thread.run(Thread.java:744)

我有依赖项:

[org.clojure/clojure "1.6.0"]
[org.clojure/tools.nrepl "0.2.3"]
[lein-light-nrepl "0.0.18"]

如果我运行lein repl,它就可以工作,但我确实需要将代码作为jar包分发。

最佳答案

尝试使用#'lighttable-ops而不仅仅是lighttable-ops

我能够按照您的描述重现问题,这似乎解决了问题。

我不确定为什么错误只发生在编译的 jar 中,但我怀疑这与 jar 制作过程中进行的 aot 编译 有关。

关于clojure - 将 Lighttable 与远程 nrepl 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24303400/

相关文章:

multidimensional-array - 在 clojure 中将多维数组转换为嵌套向量?

css - 如何使用 html5 标签在 Clojure 中设置 hiccup 中 css 的文件路径?

clojure - 如何在 Light Table 中自动智能缩进文件

opengl - Clojure 运行时编辑代码拆分为不同的文件

Emacs、Clojure、lein 和 nrepl : *nrepl* buffer shows up blank

ruby - 启动 Clojure 应用程序工头的问题

collections - 用于基于谓词排序的库函数

javascript - 如何在 Light Tables 中使用 javascript 提示用户输入?

ide - 如何使用空格而不是制表符停止光表

clojure - 如何从 clojure/cider/nrepl 中的同级文件导入内容?