似乎 lein 在如何重新编译代码方面是不可预测的。我在一个目录中有一个 gen-class 文件,试图在另一个目录中访问它。例如,给定这个 gen-class:
(ns a.Target
(:gen-class
:state state
:init init
:constructors {[String String] []}))
(defn -init
[m1 m2]
[[] (atom {"A" m1 "B" m2})])
(defn -deref
[this]
@(.state this))
并尝试从另一个命名空间访问它,减少为尝试 1、2、3 的随机变化:
(ns b.runner
(:require [a.Target ] :as Target) ;1
(:import '(a Target)) ;2
)
(compile 'a.Target) ;3
似乎没有语法可以识别“Target”而不是“a.Target”,所以我在处理 gen-class 的方式上显然有些不正确。这是一个问题,因为我正在尝试使用带注释的提供程序方法访问我们的 guice-injector,并且注释语法似乎不接受完整或简单的类规范:
(definterface TargetProvider (^a.Target getTarget [this] ))
=> Exception in thread "main" java.lang.UnsupportedOperationException: nth not supported on this type:
或简化的:
(definterface TargetProvider (^Target getTarget [this] ))
=> Can't find class java.lang.Target