如何在Clojure应用程序中嵌入REPL?
我正试图在clojure应用程序中嵌入如何在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
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管理。