上下文:我正在尝试设置集成程序,以便可以停止和启动码头服务器
我得到: IllegalArgumentException不知道如何从以下位置创建ISeq:clojure.lang.Var $ Unbound clojure.lang.RT.seqFrom(RT.java:542)
当试图停止我的集成系统时。
我的代码:
(defn handler [request]
{:status 200
:headers {"Content-Type" "text/html"}
:body "Hello World!"})
(def config
{:handlers/system {:port 3000
:host "localhost"
:join? true
:http? true
:ssl? false}})
(defmethod ig/init-key :handlers/system [_ cfg]
(jetty/run-jetty handler cfg))
(defmethod ig/halt-key! :handlers/system [_ server]
(.stop server))
(defn start []
(def sys (ig/init config)))
(defn stop []
(ig/halt! sys))
(defn resume []
(ig/resume config sys))
(defn reset []
(stop)
(start))
我在做什么错了?
答案 0 :(得分:1)
问题出在:join的配置中?设置为true。这阻塞了进程,这意味着在repl中使用ctrl + c之后,尚未将sys设置为(ig / init config)的返回值,因此当调用stop时,它试图在未绑定fn,导致OP中提到的错误。