Ошибка загрузки fxml javafx8

Я пытаюсь загрузить следующий файл FXML. Я просто получаю исключение, указывающее на строку 19. Я могу загрузить это в scenebuilder очень хорошо, через Показать предварительный просмотр в пункте меню окна. Сначала я подумал, что нельзя, чтобы прямоугольники были дочерними элементами стековой панели, но это тот самый пример, который Oracle использует для javadoc и StackPane. Есть ли известная лучшая практика для отладки сбоев загрузки и файла fxml? Он помечает первого дочернего элемента в области стека reticlefilter. Двое рассматриваемых детей - светло-голубой прямоугольник с желтой сеткой.

Предварительный просмотр изображения

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

<?import org.cornova.javafx.*?>
<?import javafx.scene.shape.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>

<VBox fx:id="sliceRealEstate" alignment="TOP_CENTER" onMouseDragged="#onMouseDragged" onMousePressed="#onMousePressed" onScroll="#onScroll" onScrollStarted="#onScrollStarted" pickOnBounds="false" stylesheets="@org/cornova/javafx/xpssdr.css" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.cornova.xpssdr.controllers.SliceController">
   <children>
      <HBox fx:id="flagPole" pickOnBounds="false">
         <children>
            <Pane fx:id="flagPane" pickOnBounds="false" stylesheets="@org/cornova/javafx/xpssdr.css">
               <children>
                  <StackPane fx:id="reticleFilter" alignment="BOTTOM_LEFT" pickOnBounds="false">
                     <children>
                        ***<Rectangle fx:id="filter" fill="#3670ad" height="40.0" opacity="0.38" width="30.0" StackPane.alignment="CENTER" />***
                        <Rectangle fx:id="reticle" fill="#e8e82f" height="40.0" width="2.0" StackPane.alignment="CENTER" />
                     </children>
                  </StackPane>
                  <HBox fx:id="flag">
                     <children>
                        <VBox alignment="TOP_CENTER" spacing="10.0" style="-fx-background-color: black;" HBox.hgrow="NEVER">
                           <children>
                              <Button fx:id="close" mnemonicParsing="false" onAction="#close" text="cls">
                                 <font>
                                    <Font size="10.0" />
                                 </font>
                              </Button>
                              <Button fx:id="lock" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#lock" text="lck">
                                 <font>
                                    <Font size="10.0" />
                                 </font>
                              </Button>
                              <Button fx:id="record" layoutX="10.0" layoutY="29.0" mnemonicParsing="false" onAction="#record" text="rec">
                                 <font>
                                    <Font size="10.0" />
                                 </font>
                              </Button>
                              <Button fx:id="play" layoutX="10.0" layoutY="48.0" mnemonicParsing="false" onAction="#play" text="play">
                                 <font>
                                    <Font size="10.0" />
                                 </font>
                              </Button>
                           </children>
                        </VBox>
                        <VBox alignment="CENTER" style="-fx-background-color: black;" HBox.hgrow="NEVER">
                           <children>
                              <HBox alignment="CENTER" VBox.vgrow="ALWAYS">
                                 <children>
                                    <VBox alignment="CENTER" HBox.hgrow="NEVER">
                                       <children>
                                          <HBox alignment="CENTER" VBox.vgrow="NEVER">
                                             <children>
                                                <VBox alignment="TOP_CENTER">
                                                   <children>
                                                      <ComboBox fx:id="rcvsrc" prefWidth="65.0" />
                                                      <ComboBox fx:id="txsrc" prefWidth="65.0" />
                                                   </children>
                                                </VBox>
                                                <Label fx:id="filterwidth" text="200" HBox.hgrow="NEVER" />
                                             </children>
                                          </HBox>
                                          <HBox alignment="CENTER_LEFT" fillHeight="false" VBox.vgrow="NEVER">
                                             <children>
                                                <Label fx:id="nbon" text="nb" />
                                                <Label fx:id="apfon" text="nr" />
                                                <Label fx:id="nron" text="apf" />
                                                <Label fx:id="qskon" text="qsk" />
                                             </children>
                                          </HBox>
                                       </children>
                                    </VBox>
                                    <HBox HBox.hgrow="ALWAYS">
                                       <children>
                                          <Label fx:id="txindicator" alignment="CENTER" contentDisplay="CENTER" graphicTextGap="0.0" styleClass="largeindicators" text="TX" textAlignment="CENTER" textFill="RED">
                                             <font>
                                                <Font size="28.0" />
                                             </font>
                                          </Label>
                                          <Label fx:id="sliceind" alignment="CENTER" contentDisplay="CENTER" styleClass="largeindicators" text="A" textAlignment="CENTER">
                                             <font>
                                                <Font size="27.0" />
                                             </font>
                                          </Label>
                                       </children>
                                    </HBox>
                                 </children>
                              </HBox>
                              <VBox VBox.vgrow="NEVER">
                                 <children>
                                    <HBox alignment="CENTER" VBox.vgrow="NEVER">
                                       <children>
                                          <Label fx:id="signalLevel" alignment="CENTER" styleClass="mediumindicators" text="S9" HBox.hgrow="NEVER">
                                             <opaqueInsets>
                                                <Insets />
                                             </opaqueInsets>
                                          </Label>
                                          <Label fx:id="signalplus" text="+20" />
                                          <TextField fx:id="frequency" maxHeight="-Infinity" maxWidth="161.0" onAction="#onFrequencyChange" onMouseEntered="#scale" prefHeight="40.0" prefWidth="144.0" promptText="144.123456" styleClass="mediumindicators" />
                                       </children>
                                    </HBox>
                                 </children>
                              </VBox>
                              <HBox VBox.vgrow="NEVER">
                                 <children>
                                    <ButtonBar buttonMinWidth="30.0" HBox.hgrow="NEVER">
                                      <buttons>
                                        <Button fx:id="spkr" mnemonicParsing="false" onAction="#displaySpkrSubmenu" text="spkr">
                                             <font>
                                                <Font size="10.0" />
                                             </font>
                                          </Button>
                                          <Button fx:id="dsp" mnemonicParsing="false" onAction="#displayDSPSubmenu" text="dsp">
                                             <font>
                                                <Font size="10.0" />
                                             </font>
                                          </Button>
                                          <Button fx:id="mode" layoutX="125.0" layoutY="17.0" mnemonicParsing="false" onAction="#displayModeSubmenu" text="rtty">
                                             <font>
                                                <Font size="10.0" />
                                             </font>
                                          </Button>
                                          <Button layoutX="220.0" layoutY="17.0" mnemonicParsing="false" onAction="#displayXRITSubmenu" text="x/rit" fx:id="xrit">
                                             <font>
                                                <Font size="10.0" />
                                             </font>
                                          </Button>
                                          <Button fx:id="dax" layoutX="315.0" layoutY="17.0" mnemonicParsing="false" onAction="#displayDAXSubmenu" text="dax">
                                             <font>
                                                <Font size="10.0" />
                                             </font>
                                          </Button>
                                      </buttons>
                                       <padding>
                                          <Insets bottom="5.0" right="5.0" top="5.0" />
                                       </padding>
                                    </ButtonBar>
                                 </children>
                              </HBox>
                           </children>
                        </VBox>
                     </children>
                  </HBox>
               </children>
            </Pane>
         </children>
      </HBox>
   </children>
</VBox>

Дополнительная информация:

Точный текст из исключения

11:11:24.191 [nioEventLoopGroup-2-3] DEBUG org.cornova.xpssdr.views.SliceView - javafx.fxml.LoadException: 
file:/home/walt/NetBeansProjects/XPSSDR/dist/run293699722/XPSSDR.jar!/SliceFlag.fxml:19

Код, который выполняет загрузку.

public VBox create() throws IOException {
    VBox pane = null;
    try {
        pane = sliceLoader.load();
        controller = sliceLoader.getController();
        controller.setRadio(radio);
        controller.setPan(pan);
        controller = sliceLoader.getController();
        controller.setPanadapter(pan);
        controller.setParent(this);
        controller.setSlice(slice);
        wire();
        Platform.runLater(() -> {
            controller.wire();
        });
    } catch (Exception e) {
        if (log.isDebugEnabled()) {
            log.debug(e.getLocalizedMessage());
            log.debug(e.getMessage());
            log.debug(e.toString());
        }
    }

    return pane;
}

Ошибка была на самом деле в конструкторе контроллера. Поздно вечером я, пытаясь отобразить прицельную сетку, когда это был ResizableCanvas, я решил изменить его на Rectangle так, чтобы он просто выполнял fill(). Так как это было существующее приложение и существующий контроллер, который работал, как это было, я не создавал его из примера контроллера SceneBuilder View и случайно не изменил @FXML в конструкторе контроллера. В FXMLLoader.java я в итоге смог отследить его до того момента, когда он пытался вызвать что-то, контроллер. Как ни странно, он указывал на неправильный контроллер, который, как я убедился, был правильным в fxml. Загадка, но не текущая. Для вас комментарий Джеймса о том, что всегда есть трассировка стека. Нет, много раз нет. Меня просто поражает, может быть, я упускаю некоторые рекомендации по отладке этих проблем (проблемы с загрузчиком JavaFX fxml, которые возникали у меня несколько последних дней).

0 ответов

Другие вопросы по тегам