中Iは、次のコードによって呼び出されるダイアログウィンドウ有する(DialogController
は、モーダルダイアログウィンドウを使用するためのヘルパークラスであり、それは主に、そのウィンドウでコントローラの参照を一緒にバンドル):JavaFXのIllegalAccessExceptionがFXML負荷()
void handleServicesEdit(ActionEvent event) throws IOException {
DCServRecEditor sre = DialogController.<DCServRecEditor>loadFXML(
CensusAssistant.RES_FXML_DIALOG_SERVEDIT,
CensusAssistant.RES_STRING_SERVEDIT,
this.getDialog());
sre.setDialogMode(DB.DBEDIT_MODE_EDIT,
tbvService.getItems(),
tbvService.getSelectionModel().getSelectedIndex(),
m_encCal);
sre.showAndWait();
sre.release();
this.updateGUI();
}
FXMLLoader.load()
メソッドの実行中に例外が発生することを確認しました。また、私のinitialize()
メソッドのコードが実行される前にエラーが発生していると判断しました。私はload()
から取得するスタックトレースのいくつかはここにある:
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
私のクラス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で名前のコントロールがなかったことを確認するチェックしました。 すべてのインスタンスフィールドには@FXML
というタグが付けられています。
FXMLのコントローラクラスの名前は、my javaファイルと同じで、適切に修飾されています。 initialize()
が呼び出される前にエラーが発生していますので、initialize()
とは思えませんが、@FXML
というタグが付いていることを確認しました。
私のJavaファイルに。
エラーメッセージには、問題が発生しているメンバに関する詳細は表示されません。ただし、修飾子 ""が付いていると言います。 コントローラクラスに戻って、すべてのメンバーをデフォルトアクセスpublic
で作成しましたが、まだエラーが発生します。
私のクラスのどこから問題が生じているのか分かりません。 ここで何がうまくいかないのか誰かが知っていますか?
スコット私は正しい答えとしてあなた自身の答えを記すことができるはずだと思います。 – jewelsea
リマインダーありがとう。私は明日まで待たなければならないと言います。 – scottb
同じエラーで、1つのTableView要素の@FXMLアノテーションが見つかりませんでした。 –