开发者

Problem Extending A Class in Clojure: ClassFormatError: Duplicate field name&signature

I'm trying to extend JB开发者_开发技巧utton 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])


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜