Java Исключение местоположения файла Fx - PullRequest
0 голосов
/ 24 февраля 2020

Здравствуйте, я новичок в JavaFx. Я создал Maven Project для моего JavaFx проекта . Я пытаюсь загрузить первый файл .f xml, однако получаю указанное выше исключение. Я попробовал несколько вещей, но я просто продолжаю ходить кругами. Получение следующего исключения: java.lang.NullPointerException: Location is required.

ControllerClass

public class HomeScreenController extends Application {

    @FXML
    private Button ProjectProp;

    @FXML
    private Button Tech;

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("homescreen.fxml"));
        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

.f xml file

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

    <?import javafx.scene.control.Button?>
    <?import javafx.scene.layout.AnchorPane?>

    <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.thales.HomeScreenController">
       <children>
          <Button fx:id="projectProp" layoutX="46.0" layoutY="38.0" mnemonicParsing="false" prefHeight="50.0" prefWidth="145.0" text="Project Properties" />
          <Button fx:id="tech" layoutX="46.0" layoutY="114.0" mnemonicParsing="false" prefHeight="50.0" prefWidth="145.0" text="Technologies" />
       </children>
    </AnchorPane>

Структура

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Код Java и путь к ресурсу выглядят правильно, поэтому что-то не так с процессом установки и / или сборки.

На скриншоте выглядит, как будто вы создали папка называется org.thales в исходной папке src/main/resources. Здесь вам нужен пакет , называемый org.thales. Вы можете проверить это, используя файловый браузер и посмотрев папку сборки (которая по умолчанию в Maven будет target/classes). Там вы должны иметь каталог org с подкаталогом thales, который должен содержать все ваши файлы классов и файлы F XML. Я подозреваю, что вы найдете каталог org.thales с файлами F XML.

Щелкните правой кнопкой мыши на src/main/resources на левой панели в Eclipse и выберите «Новый», а затем «Пакет» и введите org.thales в качестве имени пакета. Затем переместите файлы F XML (вы можете перетащить их в левую панель затмения) в пакет. Это должно решить проблему. (Вы также можете очистить, удалив папку org.thales , которая теперь должна быть пустой.)

0 голосов
/ 24 февраля 2020

Вы пытались добавить forward sla sh к имени файла, включая структуру файла?

Parent root = FXMLLoader.load(getClass().getResource("/com/thales/homescreen.fxml"));

Я не слишком знаком с используемой вами IDE, но я думаю, что она выглядит в ресурсы, но если вы вложите файл, вам нужно указать, где его найти. Также, смотря на мои собственные проекты, у меня всегда есть файл свойств, который находится в той же папке, что и f xml. Например, мой последний проект выглядит так:

  private static final String LAYOUT_RESOURCE = "imsort.fxml";
  private static final String RESOURCE_BUNDLE = "strings";


  public static void main(String[] args) {
    launch(args);
  }

  @Override
  public void start(Stage stage) throws Exception {
    ClassLoader classLoader = getClass().getClassLoader();
    ResourceBundle bundle = ResourceBundle.getBundle(RESOURCE_BUNDLE);
    FXMLLoader fxmlLoader = new FXMLLoader(classLoader.getResource(LAYOUT_RESOURCE), bundle);
    Parent root = fxmlLoader.load();
    Scene scene = new Scene(root);
    stage.setResizable(true);
    stage.setScene(scene);
    stage.sizeToScene();
    stage.show();
    setStageSize(stage, root);
}

Если у вас нет каких-либо свойств, вы может создать пустой файл с именем "strings.properties", поместив его в то же место, что и .f xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...