【发布时间】:2016-02-03 15:35:17
【问题描述】:
我有一个带有以下 ns 的项目:
- processor.bus
- processor.core
- processor.pubsub
在 processor.pubsub 我有以下内容:
(ns processor.pubsub
(:gen-class))
(defrecord PubsubBus [client])
; + other stuff related to this implementation
在 processor.bus 我有:
(ns tiptop.processor.bus
(:gen-class)
(:import [processor.pubsub PubsubBus]))
(defprotocol SendToBus
(send-line! [self json]))
(extend-type PubsubBus
SendToBus
....)
Lein 没有按正确顺序编译命名空间的问题。我收到以下错误:
$ lein compile
Compiling user
Compiling processor.auth
Compiling processor.bus
java.lang.ClassNotFoundException: processor.pubsub.PubsubBus, compiling:(bus.clj:1:1)
Exception in thread "main" java.lang.ClassNotFoundException: processor.pubsub.PubsubBus, compiling:(bus.clj:1:1)
注意它会尝试按字母顺序(auth -> bus -> pubsub)编译我的 ns,而不是依赖顺序。
当然我之前也可以预编译 pubsub.clj,比如:
$ lein compile processor.pubsub
$ lein compile processor.bus
$ lein compile
但这似乎不太适合我。如果我会有更多这样的依赖命名空间怎么办?
我如何告诉 Lein 它应该按什么顺序编译我的命名空间?或者我在project.clj 中缺少要配置的东西?如果重要的话,我有:aot :all
【问题讨论】:
-
你确定这只是字母顺序吗?您是否尝试过更改命名空间的名称并重新编译?