リモートサイトにclojureプログラムがあります。それをmccarthy
と呼びましょう。私がやりたいのは、できればnrepl-ritz
を使用して、ラップトップからnrepl-ritz-jack-in
に接続することです。ジャックインはローカルプログラムでは正常に機能しますが、リモートプログラムには接続していないようです。
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
は期待どおりに機能します。
また、lein
でmccarthy
を使用してnrepl-ritz
を開始しようとしました。
mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 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に制御を戻すことはありません。
私は多くの検索を行いましたが、「レインがパス上にあることを確認する」よりも具体的な情報を得ることができませんでした(そして、両方のマシンでそれを行いました...)。
Replが以前のcider-jack-inからまだ実行されている場合は、ciderコマンドを使用して実行中のインスタンスに接続するか、新しいインスタンスを開始する前に以前のインスタンスを停止する必要があります。
ここから ` Clojure-cider-jack-inを再実行する接続の問題
こちらもご覧くださいhttps://devcenter.heroku.com/articles/debugging-clojure