在 Clojure 中扩展类时出现问题:ClassFormatError:重复的字段名称和签名
我正在尝试使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
JButton
扩展了javax.swing.AbstractButton
,它已经有一个受保护的init
方法。如果您将 Clojure-init 函数重命名为,例如my-init
,问题就消失了:JButton
extendsjavax.swing.AbstractButton
which already has a protectedinit
method. If you rename your Clojure-init function to, e.g.,my-init
the problem is gone: