javafx выдает мне несколько ошибок

#java #javafx #javafx-8

#java #javafx #javafx-8

Вопрос:

У меня есть программа JavaFX с созданным простым графическим интерфейсом. Однако всякий раз, когда я запускаю его, он выдает ошибку, которую, похоже, невозможно исправить.

Вот код:

 package me.sam.algorithm;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
  class SchoolDay extends Application {

public void start(Stage Primarystage) {
           //main menu
           VBox menu = new VBox();
           HBox mini1= new HBox();
           HBox mini2= new HBox();
           menu.setPadding(new Insets(15,12,15,12));
           menu.setSpacing(20);
           mini1.setSpacing(3);
           mini2.setSpacing(3);
           Scene mainm = new Scene(menu, 500, 500, Color.BLACK);
           Label s1 = new Label("What day is it?");
           Label s2 = new Label("Is it late or regular start?");
           Label s3 = new Label("If you've filled everything out, press start!");
           Button beg = new Button("Start!");
           ToggleButton l1 = new ToggleButton("Regular Start");
           ToggleButton l2 = new ToggleButton("Late Start");
           ToggleButton d1 = new ToggleButton("Day 1"); 
           ToggleButton d2 = new ToggleButton("Day 2"); 
           ToggleButton d3 = new ToggleButton("Day 3"); 
           ToggleButton d4 = new ToggleButton("Day 4"); 
           ToggleButton d5 = new ToggleButton("Day 5"); 
           ToggleButton d6 = new ToggleButton("Day 6"); 
           ToggleGroup togg1 = new ToggleGroup();
           ToggleGroup togg2 = new ToggleGroup();
           d1.setToggleGroup(togg1);
           d2.setToggleGroup(togg1);
           d3.setToggleGroup(togg1);
           d4.setToggleGroup(togg1);
           d5.setToggleGroup(togg1);
           d6.setToggleGroup(togg1);
           l1.setToggleGroup(togg2);
           l2.setToggleGroup(togg2);
           mini2.getChildren().addAll(l1,l2);
           mini1.getChildren().addAll(d1,d2,d3,d4,d5,d6);
           menu.getChildren().addAll(s1,mini1,s2,mini2,s3,beg);
           menu.setAlignment(Pos.BASELINE_CENTER);
           mini1.setAlignment(Pos.CENTER);
           mini2.setAlignment(Pos.CENTER);
           Primarystage.setTitle("MICDS Day");
           Primarystage.setScene(mainm);
           Primarystage.show();
           //main scene

       }

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

Причина, по которой я публикую здесь, заключается в том, что этой ошибки здесь не было до того, как я начал извлекать файл modena.css из jfxrt.jar . Я что-то напортачил в JDK / JRE или это ошибка кода. Кроме того, это вообще можно исправить? Я уже пытался удалить jdk и переустановить его. На всякий случай, если это важно, я использую eclipse neon IDE.

Вот ошибка, которую она выдает мне независимо от того, что я делаю:

 Exception in Application constructor
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Unable to construct Application i        instance: class me.samJFX.SchoolDay
at   com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:907)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchMethodException: me.samJFX.SchoolDay.<init>()
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at   com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:818)
    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
  

Комментарии:

1. Что вы имеете в виду: «Я начал извлекать файл modena.css из jfxrt.jar «?

2. изменить class SchoolDay на public class SchoolDay

Ответ №1:

Создайте SchoolDay класс public . Application.launch не удается получить доступ к конструктору public неклассов, что приводит к этому исключению

 java.lang.NoSuchMethodException: me.samJFX.SchoolDay.<init>()
  

Также исправьте пакет ( me.samJFX != me.sam.algorithm ).

Кроме того, компилятор будет жаловаться на последнее } , поскольку класс уже был закрыт предыдущим } .

(Я не знаю, как вы вообще дошли до того, что смогли запустить этот код с последними 2 проблемами.)