2011-10-10 27 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