在 Clojure 中扩展类时出现问题:ClassFormatError:重复的字段名称和签名

发布于 2024-08-09 04:28:35 字数 491 浏览 5 评论 0原文

我正在尝试使用 Clojure 扩展 JButton,但是当我尝试创建自己的构造函数时遇到了问题。每当我将 :constructors:gen-class 一起使用时,当我尝试实例化我的类时,我总是收到“ClassFormatError: Duplicate field name&signature”消息。

我认为我正确遵循了 Clojure 文档。我做错了什么吗?

例子:

(ns test.gui.button
  (:gen-class
   :extends javax.swing.JButton
   :constructors {[] [String]}
   :init init))

(defn -init []
  [["Click Me"] nil])

I'm trying to extend JButton with Clojure, but I ran into a problem when I try to create my own constructors. Whenever I use :constructors with :gen-class I keep getting a "ClassFormatError: Duplicate field name&signature" message when I try to instantiate my class.

I think I'm following the Clojure docs properly. Am I doing something wrong?

Example:

(ns test.gui.button
  (:gen-class
   :extends javax.swing.JButton
   :constructors {[] [String]}
   :init init))

(defn -init []
  [["Click Me"] nil])

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

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

发布评论

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

评论(1

梦回梦里 2024-08-16 04:28:35

JButton 扩展了 javax.swing.AbstractButton ,它已经有一个受保护的 init 方法。如果您将 Clojure-init 函数重命名为,例如 my-init ,问题就消失了:

(ns test.gui.button
  (:gen-class
   :extends javax.swing.JButton
   :constructors {[] [String]}
   :init my-init))

(defn -my-init []
  [["Click Me"] nil])

JButton extends javax.swing.AbstractButton which already has a protected init method. If you rename your Clojure-init function to, e.g., my-init the problem is gone:

(ns test.gui.button
  (:gen-class
   :extends javax.swing.JButton
   :constructors {[] [String]}
   :init my-init))

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