这似乎是一个错误,但我想知道是否有办法解决这个问题。
我有一个如下定义的类
(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 [])
)
这是一个没有main但不会编译的库。它正在获得一个未找到类的异常,因为它试图在myns.myext.core之前编译myns.myext.core.client。有什么黑客我可以用来迫使liningen以正确的顺序编译这些吗?项目定义使用:aot:all。代码没有问题,因为如果我在gen类中注释掉implements,编译,取消注释实现并重新编译它就可以了。不能期望最终用户改变代码只是为了让库得到编译。
版本:Leiningen 2.3.4 on Java 1.7.0_55 Java HotSpot(TM)64位服务器VM
答案 0 :(得分:2)
只需在gen-class之前编写require。应按顺序评估代码。
答案 1 :(得分:2)
在这个网站之外,我被指出了一个有效的解决方案。我在我的project.clj中添加了以下内容,这是我解决问题的唯一方法。
:prep-tasks [["compile" "myns.myext.core"]
"javac" "compile"]