Почему эти имена классов Java должны быть полностью определены в Clojure? - PullRequest
3 голосов
/ 10 октября 2011

Я определяю definterface для использования с сервером REST JAX-RS ( RESTEasy ):

(ns com.example.server.resources.buildtime
  (:import [javax.ws.rs.core Cookie UriInfo]))

(definterface BuildTime
  (getBuildTime [^UriInfo info
                 ^Cookie security-cookie]))

Когда я компилирую этот класс AOT, я получаю следующееошибка:

Exception in thread "main" java.lang.NoClassDefFoundError: java/lang/UriInfo, compiling:(com/example/server/resources/buildtime.clj:13)

Если я изменю аннотации на следующие, ошибка исчезнет:

(definterface BuildTime
  (getBuildTime [^javax.ws.rs.core.UriInfo info
                 ^javax.ws.rs.core.Cookie security-cookie]))

Почему аннотации должны иметь полные имена классов, когда классы были импортированыиспользуя import:?

1 Ответ

2 голосов
/ 10 октября 2011

gen-class и gen-interface требуют, чтобы класс был полностью квалифицирован, как указано в документах http://clojuredocs.org/clojure_core/clojure.core/gen-interface и http://clojuredocs.org/clojure_core/clojure.core/gen-interface. Я не знаю, почему это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...