Clojureでクラスを拡張する際の問題:ClassFormatError:重複したフィールド名と署名

StackOverflow https://stackoverflow.com/questions/1627747

  •  06-07-2019
  •  | 
  •  

質問

ClojureでJButtonを拡張しようとしていますが、独自のコンストラクターを作成しようとしたときに問題が発生しました。 :gen-class :constructors を使用するたびに、" 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])
役に立ちましたか?

解決

JButton は、既にjavax.swing.AbstractButton を拡張しますapi / javax / swing / AbstractButton.html#init%28java.lang.String、%20javax.swing.Icon%29 "rel =" noreferrer "> 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])
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top