我正在使用Hunchentoot(在SBCL和Linux上)开发一个Web应用程序,通常我只是从Emacs(SLIME)运行它,但是为了部署,我想要更容易自动化的方式。因此,我正在尝试弄清楚ASDF,因为这似乎是当今所有人都在使用的。
myapp.asd:
(in-package #:asdf)
(defsystem :myapp
:name "my app"
:depends-on ("hunchentoot")
:components ((:file "package")
(:file "server" :depends-on ("package"))))
package.lisp:
(defpackage myapp
(:use :cl))
server.lisp:
(setq hunchentoot:*dispatch-table*
(list (hunchentoot:create-static-file-dispatcher-and-handler "/foo" "foo")))
(hunchentoot:start-server :port 8705)
如果我手动尝试加载它:
$ sbcl
* (require 'asdf)
* (asdf:operate 'asdf:load-op 'myapp)
它加载并编译了许多函数,但是突然就停止了。Hunchentoot没有运行,并且提示符不接受输入。我不知道它认为自己处于什么状态:最后打印的几行是:
STYLE-WARNING: Implicitly creating new generic function STRINGIFY-COOKIE.
STYLE-WARNING: Implicitly creating new generic function DISPATCH-REQUEST.
STYLE-WARNING: Implicitly creating new generic function WRITE-HEADER-LINE.
有没有办法让这个工作起来?(坦白说:尽管我已经花了很多时间阅读相关资料,但我真的不太理解ASDF或Common Lisp包。)