Кажется, что lein непредсказуем в том, как он перекомпилирует код. У меня есть файл класса gen в одном каталоге, я пытаюсь получить к нему доступ в другом. Например, учитывая этот gen-класс:
(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-классу. Это проблема, потому что я пытаюсь получить доступ к нашим guice-инжекторам, используя аннотированные методы провайдера, а синтаксис аннотации, похоже, не принимает ни полные, ни простые спецификации класса:
(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
(:require [a.Target :as Target])
, а не(:require [a.Target ] :as Target)
. - person omiel   schedule 27.01.2014