Мне необъяснимо тяжело делать что-то, что я считал самой простотой. У меня есть файл JAR на моем пути к классам. Я нахожусь в Emacs, использую SLIME REPL, и я пытаюсь получить доступ к статическому полю экземпляра класса Java (один внутри JAR).
Вот мой класс:
public class MainFrame extends JFrame implements WindowListener,
TreeSelectionListener {
JPanel panel;
InfocardWindow infoWindow;
InfocardBuilder infocardBuilder;
Main infomlFile;
static NotecardModel setupModel;
...
Когда я пытался:
infwb.cardmaker> (import 'javax.swing.JFrame)
javax.swing.JFrame
infwb.cardmaker> (import 'org.infoml.infocardOrganizer.MainFrame)
org.infoml.infocardOrganizer.MainFrame
infwb.cardmaker> MainFrame/setupModel
; Evaluation aborted.
Сообщение об ошибке было:
Unable to find static field: setupModel in class org.infoml.infocardOrganizer.MainFrame
[Thrown class java.lang.Exception]
Я попытался перейти к более простой проблеме: доступ к нестатическому полю. Я сделал это внутри let
, чтобы исключить возможность того, что выполнение этого из REPL может быть источником проблемы:
infwb.cardmaker> (let [mainFr (MainFrame.)]
(println (.panel mainFr)))
; Evaluation aborted.
Сообщение об ошибке было:
No matching field found: panel for class org.infoml.infocardOrganizer.MainFrame
[Thrown class java.lang.IllegalArgumentException]
Я получил тот же результат при замене (.panel mainFr)
и (println (. mainFr panel)
в теле let
. Кроме того, без изменений при переключении REPL в пространство имен user
. (Разумеется, это отчаянные движения вуду с курицей.)
Google-запросы типа «emacs slime clojure, неспособный получить доступ к ошибке поля класса Java« Unable to find static field »» »не дают ничего полезного - большинство из них связано с попыткой вызова методов класса Java (не доступ к полям класса Java).
Просто чтобы быть тщательным, я попробовал:
user> (let [mainFr (MainFrame.)]
MainFrame/setupModel)
; Evaluation aborted.
Сообщение об ошибке было, как и раньше:
Unable to find static field: setupModel in class org.infoml.infocardOrganizer.MainFrame
[Thrown class java.lang.Exception]
Итог: учитывая экземпляр MainFrame, что мне нужно сделать, чтобы получить доступ к статическому или нестатическому полю? Спасибо за любую помощь или советы, которые вы можете предоставить.