javafx Ошибка времени выполнения - PullRequest
1 голос
/ 12 марта 2019

Привет, ребята. Я разрабатывал приложение JavaFx для NetBeans 8.2 и Gluon Scene Builder.Изначально программа дает мне вывод.После разработки я получил ошибки.

(Я пробовал так много советов на этой платформе, я очищаю и собираю проект, я меняю расположение моего файла fxml, я удаляю и повторно загружаю Scene Builder, я даже удаляю весь проекти запишите еще раз, чтобы увидеть, что я что-то забываю. Программа не содержит синтаксических ошибок. Мой сервер и клиент работают. Ошибка возникает при запуске JavaFXMLApplication.java)

Возможно, у меня что-то естьотсутствует, не ошибается.

Пользовательские переменные для HP

PATH:   C:\Users\HP\Envs\gui; C:\Users\HP\Desktop\jdk-11.0.2

Системные переменные

PATH:C:\Program Files\Python37\Scripts\;C:\Program 
Files\Python37\;C:\Users\HP\Envs\gui;C:\Program 
Files\Java\jdk1.8.0_111\bin;C:\Program Files\Java\jdk-11.0.2\bin

Мой файл fxml

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" 
xmlns:fx="http://javafx.com/fxml/1" 
fx:controller="javafxmlapplication.FXMLDocumentController">

Код:

package javafxmlapplication;

import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class JavaFXMLApplication extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource
    ("/src/javafxmlapplication/fxml/FXMLDocument.fxml"));

        Scene scene = new Scene(root,900,600);

        stage.setTitle("GUI");
        stage.setScene(scene);
        stage.show();

        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask(){
            @Override
            public void run(){
                Random rand = new Random();
                int myrand = rand.nextInt(15)+1;
                System.out.println((myrand+1)+"blue");
                root.getChildrenUnmodifiable().get(myrand).setStyle("-fx-background-color: #001f3f");
                    try{
                        Thread.sleep(1000);
                    }
                    catch(InterruptedException e){
                        //e.printStackTrace();
                        System.out.println(e);
                    }
                root.getChildrenUnmodifiable().get(myrand).setStyle("-fx-background-color : #FF4136");
            }
        },0,1000);
    }

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

}

В системе сообщений об ошибках помечает эту строку, но не дает ошибок по номерам строк (Я попытался добавить getClassLoader (), он дал мне ту же ошибку)

    Parent root = FXMLLoader.load(getClass().getResource
    ("/src/javafxmlapplication/fxml/FXMLDocument.fxml"));

Моя система имеет положительный вывод с кодами java и javac в cmd.

Executing C:\Users\HP\Documents\NetBeansProjects\JavaFXMLApplication\dist\run1672502609\JavaFXMLApplication.jar using platform C:\Program Files\Java\jdk1.8.0_111\jre/bin/java
Exception in Application start method
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException: Location is required.
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
    ... 1 more
Exception running application javafxmlapplication.JavaFXMLApplication
Java Result: 1
Deleting directory C:\Users\HP\Documents\NetBeansProjects\JavaFXMLApplication\dist\run1672502609
jfxsa-run:
BUILD SUCCESSFUL (total time: 2 seconds)

Это ошибка ниже

javafxmlapplication.JavaFXMLApplication.start(JavaFXMLApplication.java:25)

указывает это

Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("/src/javafxmlapplication/fxml/FXMLDocument.fxml"));

Project structure

Scene builder connection

Буду признателен за любую помощь Я нахожусь в цикле.

1 Ответ

0 голосов
/ 13 марта 2019

Вы используете неверный путь для загрузки вашего файла fxml. Используйте fxml/FXMLDocument.fxml или /javafxapplication/fxml/FXMLDocument.fxml.

Находит ресурс с заданным именем. Правила поиска ресурсов, связанных с данным классом, реализуются загрузчиком класса, определяющего класс. Этот метод делегирует загрузчику классов этого объекта. Если этот объект был загружен загрузчиком класса начальной загрузки, метод делегируется ClassLoader.getSystemResource (java.lang.String). Перед делегированием абсолютное имя ресурса строится из данного имени ресурса с использованием этого алгоритма:

  • Если имя начинается с '/' ('\ u002f'), тогда абсолютное имя ресурса является частью имени, следующей за '/'.
  • В противном случае абсолютное имя имеет следующий вид: имя_пакета_измененного_изображения / имя

С Javadoc .

Так должно работать следующее:

Parent root = FXMLLoader.load(getClass().getResource("fxml/FXMLDocument.fxml"));

Или:

Parent root = FXMLLoader.load(getClass().getResource("/javafxapplication/fxml/FXMLDocument.fxml"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...