这似乎是一个错误,但我想知道是否有解决此问题的方法。

我有一个定义如下的类

(ns myns.myext.anotherext.client
  (:gen-class
     :implements [myns.myext.core.client]
     :prefix -
     :init init
     :state state
   )
   (:require [myns.myext.core])
)


我不知道它是否明显,但是myns.myext.core.client是myns.myext.core中的definterface,如下所示...

(ns myns.myext.core)

(definterface client
  (^void foo [])
)


这是一个没有主库但不能编译的库。它正在获取未找到的类异常,因为它试图在myns.myext.core之前编译myns.myext.core.client。我可以用什么技巧来强迫liningen以正确的顺序编译它们吗?项目定义使用:aot:all。代码没有问题,因为如果我在gen类中注释掉了这些实现,则对其进行编译,取消注释并重新编译就可以了。不能期望最终用户只是为了使库得以编译而更改代码。

版本:Java 1.7.0_55 Java HotSpot(TM)64位服务器VM上的Leiningen 2.3.4

最佳答案

只需在gen-class之前编写require。代码应按顺序进行评估。

09-13 10:44