java - 如何让 leiningen 在实现之前评估需求?

标签 java clojure interop leiningen

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

我有一个类定义如下

(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 中的定义接口(interface),如下所示...

(ns myns.myext.core)

(definterface client
  (^void foo [])
)

这是一个没有 main 的库,但无法编译。它收到类未找到异常,因为它尝试在 myns.myext.core 之前编译 myns.myext.core.client 。我可以使用任何 hack 来强制 linesenen 以正确的顺序编译它们吗?项目定义使用 :aot :all 。代码没有问题,因为如果我注释掉 gen 类中的实现,编译,取消注释并重新编译它就可以正常工作。不能指望最终用户仅仅为了编译库而更改代码。

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

最佳答案

只需将 require 写在 gen-class 之前即可。应按顺序评估代码。

关于java - 如何让 leiningen 在实现之前评估需求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24015327/

相关文章:

c# - 如何使用结构作为包含字符串的参数进行互操作调用

c# - PHP网站如何与Java、C#程序高效通信

java - 编写 Jira 插件 : how to find issues changed after a given date?

java - 使用Ant写入属性文件以在JAVA中使用

clojure - Clojure atom 中的长时间运行函数

Clojure 集合与序列的相等性

java - 日志 - 如何删除日志文件中的数据库信息

Java - 等待最长时间或事件(异步回调),以先到者为准

java - 代理私有(private)接口(interface)

具有相互证书的 WCF 服务互操作的 Java 客户端 - 无法解析用于验证签名的 KeyInfo