Изучаю Java, создал тестовый проект "расписание учебы", что-бы ознакомится с работой в Eclipse (OS Linux Mint) и напомнить основы. Настройка и разработка проекта прошла хорошо, но после сборки jar не запускается, а выдает ошибка. Прошу помочь понять в чем она состоит и как исправить?
Структуру проекта в IDE, работу и ошибку демонстрируют изображения.
Файлы проекта:
Education.java наследуется от Application и содержит main программы.
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Education extends Application {
@Override
public void start(Stage primaryStage) {
try {
Parent root = FXMLLoader.load(getClass()
.getResource("Scene.fxml"));
primaryStage.setTitle("My Education");
primaryStage.setScene(new Scene(root));
primaryStage.show();
} catch(Exception e) {
e.printStackTrace(); }
}
public static void main(String[] args) {
launch(args);
}
}
Controller.java содержит методы для выбора дня учебы и объявление элементов интерфейса
package application;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TextArea;
public class Controller implements Initializable {
@FXML
private MenuButton Days = new MenuButton();
@FXML
private MenuItem day1 = new MenuItem();
@FXML
private MenuItem day2 = new MenuItem();
@FXML
private MenuItem day3 = new MenuItem();
@FXML
private MenuItem day4 = new MenuItem();
@FXML
private MenuItem day5 = new MenuItem();
@FXML
private TextArea text = new TextArea();
@Override
public void initialize(URL location, ResourceBundle resources) {
}
@FXML
public void chooseDay1(ActionEvent event) {
System.out.println("Button Clicked!");
text.setText("");
String [] Day = new String [] {"День 1","Алгоритмы на Java. 1 час.","Изучаем JavaEE. 1 час.","Отдых. Еда.","Паттерны проектирования. 40 мин.", "Изучение ООП. 40 мин."} ;
// Show in VIEW
for (String i:Day) {
text.appendText(i+"\n");
}
}@FXML
public void chooseDay2(ActionEvent event) {
System.out.println("Button Clicked!");
text.setText("");
String [] Day = new String [] {"День 2","Рефакторинг. 30 мин","Изучаем JavaEE. 1 час","Отдых. Еда.","Структуры данных. 30 мин.", "Изучение ООП. 30 мин."} ;
// Show in VIEW
for (String i:Day) {
text.appendText(i+"\n");
}
} @FXML
public void chooseDay3(ActionEvent event) {
System.out.println("Button Clicked!");
text.setText("");
String [] Day = new String [] {"День 3","Алгоритмы на Java. 1 час","Изучаем JavaEE. 1 час","Отдых. Еда.","Java 8 Полное руководство. 40 мин.", "Изучение ООП. 30 мин."} ;
// Show in VIEW
for (String i:Day) {
text.appendText(i+"\n");
}
} @FXML
public void chooseDay4(ActionEvent event) {
System.out.println("Button Clicked!");
text.setText("");
String [] Day = new String [] {"День 4","Рефакторинг. 30 мин.","Изучаем JavaEE. 1 час","Отдых. Еда.","Паттерны проектирования. 30 мин.", "Коллекции в Java. 30 мин."} ;
// Show in VIEW
for (String i:Day) {
text.appendText(i+"\n");
}
} @FXML
public void chooseDay5(ActionEvent event) {
System.out.println("Button Clicked!");
text.setText("");
String [] Day = new String [] {"День 5","Алгоритмы на Java. 40 мин.","Изучаем JavaEE. 1 час","Отдых. Еда.","Java 8 Полное руководство. 40 мин.", "Изучение ООП. 30 мин."} ;
// Show in VIEW
for (String i:Day) {
text.appendText(i+"\n");
}
}
}
Scene.fxml описывает форму интерфейса программы.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.text.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="325.0" prefWidth="397.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller">
<children>
<MenuButton fx:id="Days" layoutX="28.0" layoutY="19.0" mnemonicParsing="false" prefHeight="26.0" prefWidth="134.0" text="Choose day">
<items>
<MenuItem fx:id="day1" mnemonicParsing="false" onAction="#chooseDay1" text="Day 1" />
<MenuItem fx:id="day2" mnemonicParsing="false" onAction="#chooseDay2" text="Day 2" />
<MenuItem fx:id="day3" mnemonicParsing="false" onAction="#chooseDay3" text="Day 3" />
<MenuItem fx:id="day4" mnemonicParsing="false" onAction="#chooseDay4" text="Day 4" />
<MenuItem fx:id="day5" mnemonicParsing="false" onAction="#chooseDay5" text="Day 5" />
</items>
<font>
<Font name="DejaVu Sans Bold" size="13.0" />
</font>
</MenuButton>
<TextArea fx:id="text" editable="false" layoutY="57.0" opacity="0.8" prefHeight="242.0" prefWidth="397.0" AnchorPane.bottomAnchor="26.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="57.0">
<font>
<Font name="KacstOffice" size="17.0" />
</font></TextArea>
<ImageView fitHeight="52.0" fitWidth="176.0" layoutX="221.0" layoutY="3.0" pickOnBounds="true" AnchorPane.bottomAnchor="270.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="3.0">
<image>
<Image url="@../../img/education.png" />
</image>
</ImageView>
<Label layoutX="129.0" layoutY="302.0" prefHeight="19.0" prefWidth="140.0" text="Week train schedule" AnchorPane.bottomAnchor="4.0" AnchorPane.leftAnchor="129.0" AnchorPane.rightAnchor="128.0" />
</children>
</AnchorPane>