Я только начал пытаться создать пользовательский интерфейс с Clojure, используя Swing.
Но я получаю CompilerException при попытке загрузить его. Я следовал этому уроку 'https://stuartsierra.com/2010/01/02/swing-into-actions-with-clojure'.
Я использую IntelliJ IDEA Community с Cursive, использую Leiningen и Clojure 1.8, и я использую Linux Mint 19.1 (если это даже имеет значение).
Мой код:
(defn say-hello []
(JOptionPane/showMessageDialog
nil "Hello, World!" "Greeting" JOptionPane/INFORMATION_MESSAGE))
(def act (proxy [ActionListener] []
(actionPerformed [event] (say-hello))))
(def button (doto (JButton. "Click Me!")
(.addActionListener act)))
(def panel (doto (JPanel.)
(.add button)))
(def frame (doto (JFrame. "Hello Frame")
(.setSize 800 800)
(.setContentPane panel)
(.setVisible true)))
(def frame (doto (JFrame. "SportSeer")
(.setSize 800 800)
(.setVisible true)))
При запуске через nREPL я получаю:
Loading src/sportseer_client/core.clj...
CompilerException java.lang.NoClassDefFoundError: Could not initialize class javax.swing.RepaintManager, compiling:(core.clj:12:13)
Edit:
Кроме того, когда я перезапускаю REPL и загружаю файл в первый раз, я получаю эту ошибку:
Loading src/sportseer_client/core.clj...
CompilerException java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper, compiling:(core.clj:12:13)
Каким-то образом этот пример работал, когда я возился с одним реплеем, а затем смог загрузить его из файла без проблем. Не знаю, что я сделал по-другому, за исключением использования другой функции импорта:
(import '(javax.swing JOptionPan JButton JFrame JPanel))
но я больше не могу копировать это и заставить это работать.
Буду весьма признателен за любую помощь, указав мне правильное направление, чтобы исправить это.