Javafx 2 FXML加载期间的JavaFX IllegalAccessException()

Javafx 2 FXML加载期间的JavaFX IllegalAccessException(),javafx-2,javafx,fxml,illegalaccessexception,Javafx 2,Javafx,Fxml,Illegalaccessexception,我有一个对话框窗口,由以下代码调用(DialogController是一个用于使用模态对话框窗口的助手类;它主要将控制器引用与其窗口捆绑在一起): 我的类DCServRecEditor是DialogController的子类。这是一个外观非常普通的FXML控制器类: class DCServRecEditor extends DialogController { private int m_dialogMode = DB.DBEDIT_MODE_ADD; private int

我有一个对话框窗口,由以下代码调用(
DialogController
是一个用于使用模态对话框窗口的助手类;它主要将控制器引用与其窗口捆绑在一起):

我的类
DCServRecEditor
DialogController
的子类。这是一个外观非常普通的FXML控制器类:

class DCServRecEditor extends DialogController {

    private int m_dialogMode = DB.DBEDIT_MODE_ADD;
    private int m_selServ = -1;
    private GregorianCalendar m_cal = null;


    @FXML // ResourceBundle that was given to the FXMLLoader
    private ResourceBundle resources;

    @FXML // URL location of the FXML file that was given to the FXMLLoader
    private URL location;

    @FXML // fx:id="ancMatchSelector"
    private AnchorPane ancMatchSelector; // Value injected by FXMLLoader

    @FXML // fx:id="ancServEditor"
    private AnchorPane ancServEditor; // Value injected by FXMLLoader

    @FXML // fx:id="ancServRecEditor"
    private AnchorPane ancServRecEditor; // Value injected by FXMLLoader

        ...
}
我进行了双重和三重检查,以确保FXML中没有一个命名控件在controller类中也没有实例字段。 所有实例字段都用
@FXML
标记

FXML中控制器类的名称与我的java文件相同,并且是正确限定的。 该错误发生在调用
initialize()
之前,因此我认为这与
initialize()
无关,尽管我已检查以确保它也被标记为
@FXML

我的控制器类的骨架是从场景生成器复制和粘贴的。。。我已经返回并重新加载了Scene Builder中的内容块,以确保java文件中没有丢失控件

错误消息没有提供有关它遇到问题的成员的详细信息,只是说它有修饰符“”。 我返回到我的控制器类,并使所有具有默认访问权限的成员公开,但我仍然得到错误。
我甚至不知道我班上的问题是从哪里来的。
有人知道这里出了什么问题吗?

又是一个令人尴尬的简单问题

我很惊讶有人到现在还没有跳上这个

问题出在我的类中
DCServRecEditor
。请注意,该类是使用
default
access权限声明的

JavaFX要求将控制器类设置为公共的


公平地说,Java在这种情况下的错误报告是令人憎恶和误导的。堆栈跟踪清楚地表明Java正在抱怨无法访问类的成员,因此我将重点放在实例字段和方法上。Java真的应该抱怨它不能访问的是类本身,而不是它的成员。

我更喜欢将每个方法和文件声明为公共

斯科特:我认为你应该能够将自己的答案标记为正确答案。谢谢提醒。它说我必须等到明天。由于同样的错误,我错过了一个TableView元素的@FXML注释。有没有任何引用可以链接到JavaFX要求公开控制器类?我今天遇到了这个问题,在使用JavaFX时有点失误,所以我想我犯了一个很大的错误。原来我有一个公共控制器。但是构造函数是默认的(私有的)。好了。类和空构造函数。
java.lang.IllegalAccessException: Class sun.reflect.misc.ReflectUtil 
    can not access a member of class org.kls.md.censusassistant.DCServRecEditor 
    with modifiers ""
file:/D:/Documents/NetBeansProjects/CensusAssistant/dist/run1284250063/CensusAssistant.jar!/org/kls/md/censusassistant/fxml/GUIServRecEditor.fxml:13
  at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:738)
  at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:775)
  at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:180)
  at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:563)
    at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2314)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2028)
  at org.kls.md.censusassistant.DialogController.loadFXML(DialogController.java:63)
  at org.kls.md.censusassistant.DCMainEditor.handleServicesEdit(DCMainEditor.java:330)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        ...

Caused by: java.lang.IllegalAccessException: Class sun.reflect.misc.ReflectUtil
    can not access a member of class org.kls.md.censusassistant.DCServRecEditor
    with modifiers "" 
  at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
  at java.lang.Class.newInstance0(Class.java:368)
  at java.lang.Class.newInstance(Class.java:327)
  at sun.reflect.misc.ReflectUtil.newInstance(ReflectUtil.java:46)
  at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:731)
... 66 more
class DCServRecEditor extends DialogController {

    private int m_dialogMode = DB.DBEDIT_MODE_ADD;
    private int m_selServ = -1;
    private GregorianCalendar m_cal = null;


    @FXML // ResourceBundle that was given to the FXMLLoader
    private ResourceBundle resources;

    @FXML // URL location of the FXML file that was given to the FXMLLoader
    private URL location;

    @FXML // fx:id="ancMatchSelector"
    private AnchorPane ancMatchSelector; // Value injected by FXMLLoader

    @FXML // fx:id="ancServEditor"
    private AnchorPane ancServEditor; // Value injected by FXMLLoader

    @FXML // fx:id="ancServRecEditor"
    private AnchorPane ancServRecEditor; // Value injected by FXMLLoader

        ...
}