javafx.fxml.LoadException

У меня возникла проблема. Получаю вот такое неприятное исключение. Для admin'a делал тоже самое, но там все работает, а тут нет.

javafx.fxml.LoadException: /C:/Users/Vlad/Desktop/%d0%9a%d1%83%d1%80%d1%81%d0%be%d0%b2%d0%b0%d1%8f%20%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0/Client/target/classes/client-menu/customerUserMenu.fxml

at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2571)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at by.bsuir.bank.controller.Controller.lambda$initialize$7(Controller.java:194)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8411)
at javafx.scene.control.Button.fire(Button.java:185)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)

at java.lang.Thread.run(Thread.java:748)

Вот CustomerUserMenu.fxml

<?xml version="1.0" encoding="UTF-8"?>



<AnchorPane fx:id="anchorPane" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="by.bsuir.bank.controller.clientMenu.ClientMenuController">
   <children>
      <StackPane fx:id="stackPane" prefHeight="700.0" prefWidth="1000.0">
         <children>
            <AnchorPane prefHeight="700.0" prefWidth="1000.0" style="-fx-background-color: #3D4956;">
               <children>
                  <FontAwesomeIcon fx:id="backButton" fill="WHITE" iconName="ARROW_LEFT" layoutX="36.0" layoutY="70.0" size="4em" wrappingWidth="62.85714340209961" />
                  <FontAwesomeIcon fx:id="exit" fill="#00f50c" iconName="CLOSE" layoutX="943.0" layoutY="69.0" size="3em" />
                  <JFXTabPane layoutX="38.0" layoutY="87.0" prefHeight="591.0" prefWidth="934.0">
                     <tabs>
                        <Tab text="Личный кабинет">
                          <content>
                            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" style="-fx-background-color: white;">
                                 <children>
                                    <JFXTextField fx:id="clientSecondName" focusColor="BLACK" layoutX="277.0" layoutY="36.0" prefHeight="26.0" prefWidth="229.0" unFocusColor="BLACK" />
                                    <JFXTextField fx:id="clientFirstName" focusColor="BLACK" layoutX="276.0" layoutY="85.0" prefHeight="26.0" prefWidth="232.0" unFocusColor="BLACK" />
                                    <JFXTextField fx:id="clientAddress" focusColor="BLACK" layoutX="276.0" layoutY="237.0" prefHeight="26.0" prefWidth="234.0" unFocusColor="BLACK" />
                                    <JFXTextField fx:id="clientPhoneNumber" focusColor="BLACK" layoutX="274.0" layoutY="186.0" prefHeight="26.0" prefWidth="234.0" unFocusColor="BLACK" />
                                    <JFXTextField fx:id="clientLastName" focusColor="BLACK" layoutX="277.0" layoutY="134.0" prefHeight="26.0" prefWidth="232.0" unFocusColor="BLACK" />
                                    <JFXTextField fx:id="clientPassword" focusColor="BLACK" layoutX="275.0" layoutY="338.0" prefHeight="26.0" prefWidth="234.0" unFocusColor="BLACK" />
                                    <JFXComboBox fx:id="clientClientType" focusColor="BLACK" layoutX="275.0" layoutY="392.0" prefHeight="26.0" prefWidth="235.0" unFocusColor="BLACK" />
                                    <JFXPasswordField fx:id="clientUsername" focusColor="BLACK" layoutX="276.0" layoutY="285.0" prefHeight="26.0" prefWidth="234.0" unFocusColor="BLACK" />
                                    <Label layoutX="208.0" layoutY="49.0" text="Фамилия" />
                                    <Label layoutX="228.0" layoutY="98.0" text="Имя" />
                                    <Label layoutX="207.0" layoutY="147.0" text="Отчество" />
                                    <Label layoutX="153.0" layoutY="199.0" text="Номер телефона" />
                                    <Label layoutX="224.0" layoutY="250.0" text="Адрес" />
                                    <Label layoutX="223.0" layoutY="298.0" text="Логин" />
                                    <Label layoutX="214.0" layoutY="342.0" text="Пароль" />
                                    <Label layoutX="220.0" layoutY="409.0" text="Лицо" />
                                    <JFXButton fx:id="saveClientButton" layoutX="704.0" layoutY="381.0" prefHeight="48.0" prefWidth="105.0" style="-fx-background-color: green;" text="Сохранить" />
                                    <JFXDatePicker fx:id="clientBirthday" defaultColor="BLACK" layoutX="341.0" layoutY="456.0" />
                                    <Label layoutX="233.0" layoutY="470.0" text="Дата рождения" />
                                    <Label layoutX="576.0" layoutY="49.0" text="Сумма на счёте:" />
                                    <Label fx:id="moneyLabel" layoutX="692.0" layoutY="49.0" prefHeight="18.0" prefWidth="140.0" text="0" />
                                 </children>
                              </AnchorPane>
                          </content>
                        </Tab>
                        <Tab text="Мои вклады">
                          <content>
                            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="556.0" prefWidth="809.0">
                                 <children>
                                    <JFXTreeTableView fx:id="myDepositeTable" layoutY="-1.0" prefHeight="501.0" prefWidth="934.0">
                                       <columns>
                                          <TreeTableColumn fx:id="depositeCol" prefWidth="286.39996945858" text="Вклад" />
                                          <TreeTableColumn fx:id="startSumCol" prefWidth="213.5999755859375" text="Начальная сумма" />
                                          <TreeTableColumn fx:id="depositeStartDateCol" prefWidth="209.60006713867188" text="Дата вклада" />
                                          <TreeTableColumn fx:id="profitCol" prefWidth="224.7999267578125" text="Прибыль" />
                                       </columns>
                                    </JFXTreeTableView>
                                    <AnchorPane layoutY="500.0" prefHeight="58.0" prefWidth="934.0" style="-fx-background-color: #00BFFF;">
                                       <children>
                                          <JFXButton fx:id="takeMoneyButton" layoutX="48.0" layoutY="11.0" prefHeight="36.0" prefWidth="132.0" style="-fx-background-color: white;" text="Забрать средства">
                                             <font>
                                                <Font name="System Bold" size="13.0" />
                                             </font>
                                          </JFXButton>
                                          <JFXButton fx:id="refillButton" layoutX="506.0" layoutY="11.0" prefHeight="36.0" prefWidth="132.0" style="-fx-background-color: white;" text="Пополнить">
                                             <font>
                                                <Font name="System Bold" size="13.0" />
                                             </font>
                                          </JFXButton>
                                          <JFXButton fx:id="fullInfoButton" layoutX="758.0" layoutY="11.0" prefHeight="36.0" prefWidth="132.0" style="-fx-background-color: white;" text="Подробно">
                                             <font>
                                                <Font name="System Bold" size="13.0" />
                                             </font>
                                          </JFXButton>
                                          <JFXButton fx:id="partialWithdrawalButton" layoutX="277.0" layoutY="11.0" prefHeight="36.0" prefWidth="138.0" style="-fx-background-color: white;" text="Снять часть">
                                             <font>
                                                <Font name="System Bold" size="13.0" />
                                             </font>
                                          </JFXButton>
                                       </children>
                                    </AnchorPane>
                                 </children>
                              </AnchorPane>
                          </content>
                        </Tab>
                        <Tab text="Доступные вклады">
                          <content>
                            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                                 <children>
                                    <JFXTreeTableView fx:id="depositeTypeTable" prefHeight="486.0" prefWidth="934.0">
                                       <columns>
                                          <TreeTableColumn fx:id="depositeTypeClientTypeCol" prefWidth="127.20007020235062" text="Тип вклада" />
                                          <TreeTableColumn fx:id="depositeTypeView" prefWidth="112.8001708984375" text="Вид вклада" />
                                          <TreeTableColumn fx:id="depositeTypeName" prefWidth="112.80006408691406" text="Наименование" />
                                          <TreeTableColumn fx:id="depositeTypeMinSum" prefWidth="73.60009765625" text="Мин. сумма" />
                                          <TreeTableColumn fx:id="depositeTypepercent" prefWidth="44.800048828125" text="\%" />
                                          <TreeTableColumn fx:id="depositeTypeMonths" prefWidth="60.800048828125" text="Месяцы" />
                                          <TreeTableColumn fx:id="depositeTypeeCapitalization" prefWidth="68.7998046875" text="Капитализация" />
                                          <TreeTableColumn fx:id="depositeTypereFill" prefWidth="78.39990234375" text="Пополнение" />
                                          <TreeTableColumn fx:id="depositeTypeEarlyRecall" prefWidth="75.0" text="Досрочное снятие" />
                                          <TreeTableColumn fx:id="depositeTypePartialWithdrawal" prefWidth="173.60009765625" text="Частичное снятие" />
                                       </columns>
                                    </JFXTreeTableView>
                                    <AnchorPane layoutY="485.0" prefHeight="71.0" prefWidth="934.0" style="-fx-background-color: #00BFFF;">
                                       <children>
                                          <JFXButton fx:id="addDepositeButton" layoutX="393.0" layoutY="13.0" prefHeight="48.0" prefWidth="150.0" style="-fx-background-color: white;" text="Оформить" />
                                       </children></AnchorPane>
                                 </children>
                              </AnchorPane>
                          </content>
                        </Tab>
                     </tabs>
                  </JFXTabPane>
               </children>
            </AnchorPane>
         </children></StackPane>
   </children>
</AnchorPane>

И вот ClientMenuController

public class ClientMenuController {
    private static Client selectClient;

    Gson gson = new Gson();


    @FXML
    private AnchorPane anchorPane;

    @FXML
    private Label moneyLabel;

    @FXML
    private Text mainLabel;

    @FXML
    private FontAwesomeIcon exit;

    @FXML
    private FontAwesomeIcon backButton;

    @FXML
    private StackPane stackPane;

    @FXML
    private JFXTreeTableView<DepositeType> depositeTypeTable;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypeClientTypeCol;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypeView;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypeName;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypeMinSum;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypepercent;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypeMonths;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypeeCapitalization;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypereFill;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypeEarlyRecall;

    @FXML
    private TreeTableColumn<DepositeType, String> depositeTypePartialWithdrawal;

    @FXML
    private JFXTextField clientSecondName;

    @FXML
    private JFXTextField clientFirstName;

    @FXML
    private JFXTextField clientAddress;

    @FXML
    private JFXTextField clientPhoneNumber;

    @FXML
    private JFXTextField clientLastName;

    @FXML
    private JFXTextField clientPassword;

    @FXML
    private JFXComboBox<String> clientClientType;

    @FXML
    private JFXPasswordField clientUsername;

    @FXML
    private JFXButton saveClientButton;

    @FXML
    private JFXDatePicker clientBirthday;

    @FXML
    private JFXTreeTableView<Deposite> myDepositeTable;

    @FXML
    private TreeTableColumn<Deposite, String > depositeCol;

    @FXML
    private TreeTableColumn<Deposite, String> startSumCol;

    @FXML
    private TreeTableColumn<Deposite, String> depositeStartDateCol;

    @FXML
    private TreeTableColumn<Deposite, String> profitCol;

    @FXML
    private JFXButton fullInfoButton;

    @FXML
    private JFXButton refillButton;

    @FXML
    private JFXButton partialWithdrawalButton;

    private ObservableList<DepositeType> depositeTypes = FXCollections.observableArrayList();

    private ObservableList<Deposite> deposites = FXCollections.observableArrayList();

    //private ObservableList<Visit> freeVisits = FXCollections.observableArrayList();

    private ObservableList<Branch> branches = FXCollections.observableArrayList();

    private ObservableList<String> specializations = FXCollections.observableArrayList();

    @FXML
    private JFXButton addDepositeButton;

    @FXML
    private JFXButton takeMoneyButton;

    @FXML
    public AnchorPane getAnchorPane() {
        return anchorPane;
    }

    @FXML
    public void setDisable(boolean disable) {
        anchorPane.setDisable(disable);
    }



    public static void setCurrentClient(Client client) {
        ClientMenuController.selectClient = client;
    }

    public void setData() {

        moneyLabel.setText(String.valueOf(selectClient.getMoney()/100)+"."+String.valueOf(selectClient.getMoney()%100));
        clientSecondName.setText(selectClient.getSecondName());
        clientFirstName.setText(selectClient.getFirstName());
        clientAddress.setText(selectClient.getAddress());
        clientPhoneNumber.setText(selectClient.getPhoneNumber());
        clientLastName.setText(selectClient.getLastName());
        clientPassword.setText(selectClient.getPassword());
        clientClientType.setValue(selectClient.getClientType());
        clientUsername.setText(selectClient.getUsername());
        clientBirthday.setValue(selectClient.getBirthday());
    }




    @FXML
    void createDialog(String message)
    {
        JFXDialogLayout dialogLayout = new JFXDialogLayout();
        JFXButton button = new JFXButton("OK");
        JFXDialog dialog = new JFXDialog(stackPane,dialogLayout,JFXDialog.DialogTransition.TOP);
        button.setOnAction(event1 -> dialog.close());
        dialogLayout.setBody(new Text(message));
        dialogLayout.setActions(button);
        dialog.setTranslateX(-10);
        dialog.setMaxWidth(365);
        dialog.show();
    }



    @FXML
    public void updateDeposites() {
        int i;
        LocalDate dateBuf;
        deposites.clear();
        List<Deposite> depositeList;
        Packet packet = new Packet();
        packet.setCommand("getDeposites");
        String response = NetClientThread.sendPacket(gson.toJson(packet));
        packet = gson.fromJson(response,Packet.class);
        Type itemsListType = new TypeToken<List<Deposite>>() {}.getType();
        depositeList = gson.fromJson(packet.getData(),itemsListType);
        for(Deposite deposite:depositeList) {
            i = 0;
            int buf = 0;
            if(deposite.getUser().equals(selectClient))
            {
                        dateBuf = LocalDate.of(deposite.getDateStart().getYear(), deposite.getDateStart().getMonth(), deposite.getDateStart().getDayOfMonth());
                        System.out.println(LocalDate.now().compareTo(dateBuf.plusMonths(1)));
                        buf = LocalDate.now().compareTo(dateBuf.plusMonths(1));
                        if (buf > 0) {
                            for(int j = 0; j<buf; j++) {
                                deposite.setProfit(deposite.getProfit() + new Double((deposite.getSum() + deposite.getProfit()) * (deposite.getDepositetype().getPercent() / 1200)).longValue());
                                deposite.setDateLastRecall(deposite.getDateLastRecall().plusMonths(1));
                            }
                            }
                    }
                deposites.add(deposite);
                }
            }


    public void updateData() {
        depositeTypes.clear();
        List<DepositeType> depositeTypeList;
        Packet packet = new Packet();
        packet.setCommand("getDepositeTypeList");
        String response = NetClientThread.sendPacket(gson.toJson(packet));
        packet = gson.fromJson(response,Packet.class);
        Type itemsListType = new TypeToken<List<DepositeType>>() {}.getType();
        depositeTypeList = gson.fromJson(packet.getData(),itemsListType);
        for(DepositeType depositeType:depositeTypeList) {
            if(depositeType.getClientType().equals("Всё"))
            {
                depositeTypes.add(depositeType);
            }
            if(depositeType.getClientType().equals(selectClient.getClientType())) {
                depositeTypeList.add(depositeType);
            }
        }
    }

    @FXML
    void initialize() {
        clientClientType.getItems().add(String.valueOf("Индивидуальный предприниматель"));
        clientClientType.getItems().add(String.valueOf("Физическое лицо"));
        clientClientType.getItems().add(String.valueOf("Юридическое лицо"));
        updateData();
        updateDeposites();
        setData();
        exit.setOnMouseClicked(event -> System.exit(-1));
        backButton.setOnMouseClicked(event -> {
            Parent root = null;
            try {
                root = FXMLLoader.load(getClass().getResource("/authorization/authorisation.fxml"));
            } catch (IOException e) {
                e.printStackTrace();
            }
            Main.setNewScene(root,1);
        });

        fullInfoButton.setOnAction(event -> {
            Deposite depositeBuf = myDepositeTable.getSelectionModel().getSelectedItem().getValue();
            try {
                Parent root;
                FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/client-menu/info-deposite-menu/InfoDeposite.fxml"));
                root = fxmlLoader.load();
                Main.setNewScene(root,1);
                InfoDepositeController.getInstance().setFields(depositeBuf);
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
        partialWithdrawalButton.setOnAction(event -> {
            Deposite depositeBuf = myDepositeTable.getSelectionModel().getSelectedItem().getValue();
            try {
                Parent root;
                FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/client-menu/take-part-money-menu/takePartMoney.fxml"));
                root = fxmlLoader.load();
                Main.setNewScene(root,1);
                // AddDepositeController controller = fxmlLoader.<AddDepositeController>getController();
                TakePartMoneyController.getInstance().setFields(depositeBuf, selectClient);
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
        addDepositeButton.setOnAction(event -> {
            DepositeType depositeTypeBuf = depositeTypeTable.getSelectionModel().getSelectedItem().getValue();
            try {
                Parent root;
                FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/client-menu/add-deposite-menu/addDeposite.fxml"));
                root = fxmlLoader.load();
                Main.setNewScene(root,1);
                // AddDepositeController controller = fxmlLoader.<AddDepositeController>getController();
                AddDepositeController.getInstance().setFields(depositeTypeBuf, selectClient);
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
        takeMoneyButton.setOnAction(event -> {
            Deposite depositeBuf = myDepositeTable.getSelectionModel().getSelectedItem().getValue();
            try {
                Parent root;
                FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/client-menu/take-profit-menu/takeProfit.fxml"));
                root = fxmlLoader.load();
                Main.setNewScene(root,1);
                // AddDepositeController controller = fxmlLoader.<AddDepositeController>getController();
                takeProfitController.getInstance().setFields(depositeBuf, selectClient);
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
        refillButton.setOnAction(event -> {
            Deposite depositeBuf = myDepositeTable.getSelectionModel().getSelectedItem().getValue();
            try {
                Parent root;
                FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/client-menu/refill-deposite-menu/refillDeposite.fxml"));
                root = fxmlLoader.load();
                Main.setNewScene(root,1);
                // AddDepositeController controller = fxmlLoader.<AddDepositeController>getController();
                RefillDepositeController.getInstance().setFields(depositeBuf, selectClient);
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
        SimpleDateFormat formatForDateNow = new SimpleDateFormat("E yyyy.MM.dd hh:mm");





        saveClientButton.setOnAction(event -> {
            if (clientPhoneNumber.getText().length() == 0 || clientUsername.getText().length() < 5 || clientPassword.getText().length() < 8 || clientFirstName.getText().length() == 0 || clientSecondName.getText().length() == 0 || clientLastName.getText().length() == 0 || clientClientType.getSelectionModel().isEmpty() || clientBirthday.getValue() == null || clientAddress.getText().length() == 0) {
                return;
            }
            Client client = new Client(selectClient.getId(), clientUsername.getText(), clientPassword.getText(), clientFirstName.getText(),
                    clientSecondName.getText(), clientLastName.getText(), clientBirthday.getValue(),
                    clientClientType.getSelectionModel().getSelectedItem(), clientPhoneNumber.getText(), clientAddress.getText());
            Packet packet = new Packet();
            packet.setCommand("editClient");
            packet.setData(gson.toJson(client));
            String response = NetClientThread.sendPacket(gson.toJson(packet));
            packet = gson.fromJson(response,Packet.class);
            boolean value = gson.fromJson(packet.getData(),Boolean.class);
            if(value) {
                createDialog("Изменения прошли успешно!");
            }
            else{
                createDialog("Неудача, логин занят!");
            }
        });



    }
}

Ответы (0 шт):