【问题标题】:How to upgrade nrepl version of leiningen?如何升级 leiningen 的 nrepl 版本?
【发布时间】:2015-05-22 05:09:09
【问题描述】:

我正在使用 leiningenemacs + cider 进行 clojure 开发。几天前,我通过 emacs 包管理器升级 cider 后,在运行 M-x cider-connectM-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,但是,我不知道如何。

我通过brew 安装了leiningen,它使用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=>

leiningen简介的内容是:

{:user {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]}}

问题::如何升级leiningen使用的nrepl版本?

【问题讨论】:

  • CIDER 甚至可以与较旧的 nREPL 版本一起使用,但其中存在一些微妙且不那么微妙的错误。真的应该有人更新与 lein 捆绑的 nREPL 并回复。
  • 看来 nREPL 已经在 lein 的 master 中更新了。

标签: emacs clojure leiningen


【解决方案1】:

我刚遇到这个问题,我通过在profiles.clj 中添加对tools.nrepl 的较新版本的显式依赖来解决它。我的~/.lein/profiles.clj

{:repl {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]
        :dependencies [[org.clojure/tools.nrepl "0.2.7"]]}}

不知道这是最好的方式还是官方的方式,尽管如此。

【讨论】:

  • github.com/clojure-emacs/cider/issues/970 似乎nRepl prio to 2.7有一些错误。我认为这个依赖已经在 lein master 中更新了,但可能还没有发布,所以添加对更高版本的依赖可能是正确的修复,尽管你可能想在下一次 lein 更新后删除那个 dep
  • 注意...这对我有用提供依赖项位于profiles.clj,而不是项目的project.clj
  • 有了确切的profiles.clj,lein 下载了nrepl 0.2.7 文件,但对我来说仍然启动了nrepl 0.2.6。在 Windows 7 机器和 OS X 上。
  • @ShannonSeverance 我怀疑你犯了我做的错误,将 tools.nrepl 版本向量放在 :plugins 向量中,而不是 :dependencies 向量中......
  • 查看 peterfoldi 的回答,了解现在似乎需要的更新。
【解决方案2】:

lein 有一个升级命令,所以在最简单的情况下

lein upgrade

如果您使用包管理器安装 leiningen,您可能需要执行以下操作(以 OS X 为例,Linux 发行版有自己出色的包管理器):

brew unlink leiningen
brew update
brew install leiningen

【讨论】:

  • 这对我有用。我最近将我的操作系统更新为 el.capitan 但没有更新 leiningen。因此,苹果酒 nRepl 开始抱怨。感谢您的帮助。
【解决方案3】:

@matthew-moss 的附加说明:tools.nrepl 依赖行仅在您从 clojure 项目中运行 lein repl 时使用。例如,如果你只是从你的主目录运行lein repl,你最终会使用编译成 leiningen 的 tools.nrepl 版本。不知道为什么。

希望能节省一些时间。

【讨论】:

    【解决方案4】:

    作为已接受答案的补充:在 userprofiles.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"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-09
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      相关资源
      最近更新 更多