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
「a.Target」の代わりに「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