Clojureの開発にleiningen
とemacs
+ cider
を使用しています。数日前、emacsパッケージマネージャーでcider
をアップグレードした後、M-x cider-connect
またはM-x cider-jack-in
を実行すると、次の警告メッセージが表示されます。
; CIDER 0.9.0snapshot (package: 20150222.137) (Java 1.8.0_31, Clojure 1.6.0, nREPL 0.2.6)
WARNING: CIDER requires nREPL 0.2.7 to work properly
user>
警告メッセージは、nreplを0.2.7にアップグレードする必要があることを明確に示していますが、方法はわかりません。
leiningen
経由でbrew
をインストールしましたが、nrepl 0.2.6
を使用しています。
$ lein repl
nREPL server started on port 53218 on Host 127.0.0.1 - nrepl://127.0.0.1:53218
REPL-y 0.3.5, nREPL 0.2.6
Clojure 1.6.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_31-b13
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc Java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
user=>
ライニンゲンプロファイルの内容は次のとおりです。
{:user {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]}}
質問::ライニンゲンによって使用されるnreplのバージョンをアップグレードする方法?
この問題が発生したばかりで、tools.nrepl
の新しいバージョンへの明示的な依存関係をprofiles.clj
に追加することで解決しました。私の~/.lein/profiles.clj
:
{:repl {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]
:dependencies [[org.clojure/tools.nrepl "0.2.7"]]}}
それが最善の方法なのか公式な方法なのかはわからない、tho '。
@ matthew-mossの上部にある追加の注意:tools.nrepl依存関係行は、clojureプロジェクト内からlein repl
を実行する場合にのみ使用されます。たとえば、ホームディレクトリからlein repl
を実行するだけの場合、leiningenにコンパイルされたバージョンのtools.nreplを使用することになります。理由はわかりません。
それが誰かの時間を節約することを願っています。
leinにはupgradeコマンドがあるため、最も単純な場合
lein upgrade
パッケージマネージャーを使用してleiningenをインストールした場合は、以下のようなことを行う必要があります(OS Xの例、Linuxディストリビューションには独自の素晴らしいパッケージマネージャーがあります)。
brew unlink leiningen
brew update
brew install leiningen
受け入れられた答えへの追加として:ユーザーprofiles.cljに0.2.7の依存関係を追加すると、数日前に機能しましたが、突然0.2.6警告に戻りました。 「lein deps:tree」と尋ねると、次の行が含まれていました。
[org.clojure/tools.nrepl "0.2.7" :scope "test" :exclusions [[org.clojure/clojure]]]
これはおそらく、lein-test-refreshプラグイン(同じprofiles.cljで定義されている)がここで何らかの混乱を引き起こしているという手がかりを与えてくれました。 profiles についてさらに読む:^:replaceヒントについて学びました。依存関係のこの行は今私のために動作します:
^:replace [org.clojure/tools.nrepl "0.2.7"]