Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Clojure应用程序中嵌入REPL?_Clojure_Leiningen_Nrepl_Cider - Fatal编程技术网

如何在Clojure应用程序中嵌入REPL?

如何在Clojure应用程序中嵌入REPL?,clojure,leiningen,nrepl,cider,Clojure,Leiningen,Nrepl,Cider,我正试图在clojure应用程序中嵌入cider.nrepl,以便连接到正在运行的实例、检查、修复等 我在我的leiningen档案文件中包括了苹果酒nrepl: :plugins [[cider/cider-nrepl "0.7.0"]] 然后在我的core.clj中: (:require (cheshire [core :as c]) [byte-streams :as bs] [clojail [core :as jail] [tester

我正试图在clojure应用程序中嵌入
cider.nrepl
,以便连接到正在运行的实例、检查、修复等

我在我的leiningen档案文件中包括了
苹果酒nrepl

:plugins [[cider/cider-nrepl "0.7.0"]]
然后在我的
core.clj
中:

(:require (cheshire [core :as c])
            [byte-streams :as bs]
            [clojail [core :as jail] [testers :as testers]]
            [clojure.tools.nrepl [server :as nrepl-server]]
            [cider.nrepl :refer (cider-nrepl-handler)])

(defn -main [& args]
  (println "Starting up REPL")
  (nrepl-server/start-server :bind "0.0.0.0" :port 7888 :handler cider-nrepl-handler))
程序编译并运行正常。但当我尝试连接到端口7888中的REPL会话时,我得到以下堆栈跟踪:

错误:未处理的REPL处理程序异常处理消息{:id 0da185f2-38e8-4a83-9941-327b9806176b,:op clone} NoClassDefFoundError:clojure/tools/nrepl/StdOutBuffer位于 clojure.tools.nrepl.middleware.session$session\u out.invoke(session.clj:26) 在 clojure.tools.nrepl.middleware.session$create\u session.invoke(session.clj:118) 在 clojure.tools.nrepl.middleware.session$create\u session.invoke(session.clj:114)

现在不知道该如何进行。谷歌搜索StdOutBuffer也没有帮助

更新 这是我完整的
项目。clj

(defproject ruler "1.0"
  :description "Autopal Rule Server"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [clojail "1.0.6"]
                 [com.rmoquin.bundle/jeromq "0.2.0"]
                 [cheshire "5.2.0"]
                 [byte-streams "0.1.10"]
                 [clj-time "0.7.0"]]
  :aot [ruler.core]
  :main ruler.core)

如上所述,苹果酒nrepl是通过leiningen的配置文件包含的。

我认为问题在于对苹果酒/cider repl的依赖关系是您配置文件中的插件依赖关系。如果您的项目依赖于该库,那么它应该位于project.clj依赖项中


lein配置文件是针对您希望在开发过程中使用但不在生产中使用的LIB的,因此它们不作为war/jar/uberjar人工制品的一部分包含。

我认为问题在于,对苹果酒/cider repl的依赖性是您配置文件中的插件依赖性。如果您的项目依赖于该库,那么它应该位于project.clj依赖项中


lein配置文件是针对您希望在开发过程中使用但不在生产过程中使用的LIB的,因此它们不包括在war/jar/uberjar人工制品中。

我无法重现您的问题。你能发布你的依赖关系吗?我不能重现你的问题。你能发布你的依赖关系吗?就是这样。非常感谢你。我开始了解Clojure lib管理。就是这样。非常感谢你。我开始了解Clojure lib管理。