我想要什么:
我有一个Clojure程序在远程站点上,我们称其为mccarthy
。我想做的是从我的笔记本电脑连接到一个nrepl-ritz
,最好使用nrepl-ritz-jack-in
。Jack In对于本地程序很有效,但似乎无法连接到远程程序。
尝试1
C-x C-f 在/mccarthy:code/program/project.clj
上
(require 'nrepl-ritz)
M-x nrepl-ritz-jack-in
结果
Emacs似乎挂起了。 如果我去*nrepl-server*
缓冲区,我会看到这个:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.flatland.drip.Main.invoke(Main.java:117)
at org.flatland.drip.Main.start(Main.java:88)
at org.flatland.drip.Main.main(Main.java:64)
Caused by: java.lang.AssertionError: Assert failed: project
at leiningen.ritz_nrepl$start_jpda_server.invoke(ritz_nrepl.clj:23)
at leiningen.ritz_nrepl$ritz_nrepl.doInvoke(ritz_nrepl.clj:95)
(以及许多其他的行,也是如此...)
我在我的笔记本电脑上使用 drip
,但在 mccarthy
上没有使用,因此显然 nrepl-ritz-jack-in
没有检测到它是一个远程文件。 在这种情况下,普通的旧式 nrepl-jack-in
将按预期工作。
尝试2
我还尝试在 mccarthy
上使用 lein
启动 nrepl-ritz
:
mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 42874
我从我的笔记本电脑上转发一个端口,以便本地端口42874
连接到mccarthy
上的端口42874
:
从我的笔记本电脑上转发一个端口,以便本地端口42874
连接到mccarthy
上的端口42874
:
ssh -L 42874:localhost:42874 -N mccarthy
然后,从我的本地Emacs:
(require 'nrepl-ritz)
M-x nrepl
主机:127.0.0.1
端口:42874
这使我获得了一个连接:
; nREPL 0.1.7-preview
user>
为了测试它,我运行
M-x nrepl-ritz-threads
它会给我一个漂亮的线程表。
M-x nrepl-ritz-break-on-exception
user> (/ 1 0)
结果
这个程序出现了故障,但有时会显示一个隐藏的调试缓冲区,并提供一些可用的重新启动选项。如果我告诉它将异常传递回程序,它就永远不会将控制权返回REPL。
我已经进行了大量搜索,但是除了“确保lein在您的路径上”(我在两台机器上都这样做了...)之外,我无法获得任何更具体的信息。
(/ 1 0)
- 这个挂了?可能在尝试计算无穷大... ;-)` - firefrorefiddle