Не удалось запустить приложение в проекте javaFX - PullRequest
1 голос
/ 11 апреля 2019

после того, как я добавил Maven зависимостей в свою программу JavaFX и создал новый пакет, называемый Алгоритм с двумя классами, мое приложение не запускается.

Выдаются следующие исключения:

Причина: java.lang.RuntimeException: исключение в методе запуска приложения Вызывается: java.lang.NullPointerException: требуется местоположение.

и так далее ...

Я пробовал:
JavaFX "Требуется местоположение." хотя он находится в той же упаковке
и
Исключение в методе запуска приложения java.lang.reflect.InvocationTargetException

Оба не работали

На изображении ниже представлена ​​структура моего проекта, любая помощь высоко ценится. Кажется, что sample.fxml недействителен ...

Edit:
перемещение файла fxml в каталог ресурсов также не сработало

image

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

Я только что примерно скопировал этот код, поместил его на свой IntelliJ, и он работал как чудо.Может быть, вы просто пропускаете / в названии ресурса?

Вот точный код, который я использовал:

package hello;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;

public class Hello extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent parent = FXMLLoader.load(Hello.class.getResource("/hello.fxml"));
        Scene scene = new Scene(p, 400, 400);
        primaryStage.setTitle("my app");
        primaryStage.setScene(scene);
        primaryStage.centerOnScreen();
        primaryStage.show();
    }

    public static void main(String[] args) throws IOException {
        launch(Hello.class);
    }
}

Файл FXML:

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

<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Text?>
<AnchorPane xmlns="http://javafx.com/javafx"
            xmlns:fx="http://javafx.com/fxml"
            fx:controller="hello.Hello"
            prefHeight="400.0" prefWidth="600.0">
    <VBox>
        <Text>Hello</Text>
    </VBox>
</AnchorPane>

Запуск с IntelliJ.Работает.Создайте Jar, запустите с java -jar ... также работает.

0 голосов
/ 11 апреля 2019

Ваша IDE, IntelliJ, загружает файлы ресурсов из пути к классам, используя распознавание образов, чтобы соответствовать расширениям файлов. По умолчанию IntelliJ включает такие расширения, как JPG, PNG, HTML и т. Д. *

Это означает, что вам нужно вручную указать расширения файлов, которые вы хотите найти для компилятора, для вас это FXML.

Вот несколько простых инструкций о том, как этого добиться: https://www.jetbrains.com/help/idea/working-with-projects.html

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