Problème lors de l'extension d'une classe dans Clojure: ClassFormatError: nom de champ et signature en double

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

  •  06-07-2019
  •  | 
  •  

Question

J'essaie d'étendre JButton avec Clojure, mais j'ai rencontré un problème lorsque j'ai essayé de créer mes propres constructeurs. Chaque fois que j'utilise : constructeurs avec : gen-class , je reçois régulièrement un " ClassFormatError: nom du champ en double & signature; " message lorsque j'essaie d'instancier ma classe.

Je pense que je suis les documents Clojure correctement. Est-ce que je fais quelque chose de mal?

Exemple:

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

(defn -init []
  [["Click Me"] nil])
Était-ce utile?

La solution

JButton étend javax.swing.AbstractButton qui a déjà un élément protégé init . Si vous renommez votre fonction Clojure-init en my-init , par exemple, le problème a disparu:

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

(defn -my-init []
  [["Click Me"] nil])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top