我很高兴使用通过 elpa 安装的 swank-clojure。但我想对 deftype、defprotocol 等做一些工作,这些在 clojure 1.1 中不可用。
要使用我自己的类路径,我使用了 Rick Moynihan 在关于设置自定义类路径的 stackoverflow 问题中提出的出色建议,即设置如下脚本:
#!/bin/bash
java -server -cp "./lib/*":./src clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))"
如果 lib 中的 clojure jar 文件是 1.1,那么它会很好地工作,但是对于 1.2,它会爆炸:
Exception in thread "main" java.lang.NoSuchMethodError: clojure.lang.RestFn.<init>(I)V (macroexpand.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:5274)
at clojure.lang.Compiler.load(Compiler.java:5663)
at clojure.lang.RT.loadResourceScript(RT.java:330)
at clojure.lang.RT.loadResourceScript(RT.java:321)
at clojure.lang.RT.load(RT.java:399)
at clojure.lang.RT.load(RT.java:371)
at clojure.core$load__5663$fn__5671.invoke(core.clj:4255)
at clojure.core$load__5663.doInvoke(core.clj:4254)
at clojure.lang.RestFn.invoke(RestFn.java:409)
...and many, many more
那么是否有一些神奇的咒语可以使这项工作发挥作用,或者 clojure 1.2 兼容性还没有?