为什么这些 Java 类名必须在 Clojure 中完全限定?

发布于 2024-12-09 04:07:13 字数 780 浏览 1 评论 0原文

我正在定义一个与 JAX-RS REST 服务器一起使用的 definterfaceRESTEasy):

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

当使用导入类时,为什么注释必须具有完全限定的类名导入:

I am defining a definterface to be used with a JAX-RS REST server (RESTEasy):

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

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

When I AOT compile this class, I get the following error:

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

If I change the annotations to the following, the error goes away:

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

Why must the annotations have fully-qualified class names when the classes have been imported using import:?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一笑百媚生 2024-12-16 04:07:13

gen-classgen-interface 都要求类按照文档中所述完全限定 http://clojuredocs.org/clojure_core/clojure.core/gen-interfacehttp://clojuredocs.org/clojure_core/clojure.core/gen-interface。我不知道为什么会这样。

gen-class and gen-interface both require the class to be fully qualified as stated in the docs http://clojuredocs.org/clojure_core/clojure.core/gen-interface and http://clojuredocs.org/clojure_core/clojure.core/gen-interface. I am not aware why this is so.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文