2011-10-10 54 views
3

我定義一個definterface與一個JAX-RS REST服務器(RESTEasy)使用:爲什麼這些Java類名在Clojure中完全合格?

(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])) 

爲什麼註釋在t時刻必須具有完全限定的類名他的班級是否使用import:進口?

回答

2

gen-classgen-interface都要求該類完全合格,如文檔http://clojuredocs.org/clojure_core/clojure.core/gen-interfacehttp://clojuredocs.org/clojure_core/clojure.core/gen-interface中所述。我不知道爲什麼這樣。

+0

對於'definterface'來說,這是否正確?我無法在Clojure API網站(http://clojure.github.com/clojure/)上找到'definterface'的文檔。 – Ralph

+0

'definterface'只是做了一些宏解析,然後發送到'gen-interface',所以如果一個人有這個需求,那麼它就像其他人一樣。 – amalloy