Исключение метода запуска, MainController ClassNotFound - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть некоторые проблемы.Я добавил графический интерфейс и не могу запустить свое приложение.Я пытался установить источники другим способом, но это не помогло.

Начальный класс:

public class Main extends Application
{
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("gui/Main.fxml"));

    Scene scene = new Scene(root);
    stage.setMinHeight(600);
    stage.setMinWidth(800);
    stage.setScene(scene);
    stage.show();
}

Я пытался:

("/gui/Main.fxml"); 
("Main.fxml"); 
("/Main.fxml"); 
("gui/Main") etc.

Основной класс:

 public static void main(String[] args) throws SQLException, IOException {

        String databaseUrl = "jdbc:sqlite:bazadanych.db";

        ConnectionSource connectionSource;
        connectionSource = new JdbcConnectionSource(databaseUrl);


        Dao<Klient, Integer> klientsDao =
                DaoManager.createDao(connectionSource, Klient.class);
        Dao<Samochod,Integer> samochodsDao =
                DaoManager.createDao(connectionSource, Samochod.class);
        Dao<Usterka,Integer> usterkasDao =
                DaoManager.createDao(connectionSource, Usterka.class);

        launch(args);


        connectionSource.close();
    }

Первая строка файла FXML:

<AnchorPane minHeight="600.0" minWidth="800.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gui/MainController">

Контроллер:

package gui;

public class MainController implements Initializable {


    @Override
    public void initialize(URL url, ResourceBundle rb) {

    }

}

Ошибка:

"C:\Program Files\Java\jdk1.8.0_161\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=55783:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_161\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_161\jre\lib\rt.jar;C:\Users\Kowali\Desktop\Projekt0-2\Projekt\target\classes;C:\Users\Kowali\.m2\repository\com\j256\ormlite\ormlite-jdbc\5.1\ormlite-jdbc-5.1.jar;C:\Users\Kowali\.m2\repository\com\j256\ormlite\ormlite-core\5.1\ormlite-core-5.1.jar;C:\Users\Kowali\.m2\repository\org\xerial\sqlite-jdbc\3.25.2\sqlite-jdbc-3.25.2.jar" Main
2018-12-04 16:10:59,239 [DEBUG] DaoManager created dao for class class Klient with reflection
2018-12-04 16:10:59,241 [DEBUG] DaoManager created dao for class class Samochod with reflection
2018-12-04 16:10:59,245 [DEBUG] DaoManager created dao for class class Usterka with reflection
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$154(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:748)
Caused by: javafx.fxml.LoadException: 
/C:/Users/Kowali/Desktop/Projekt0-2/Projekt/target/classes/Main.fxml:10
    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
    at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103)
    at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:922)
    at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:971)
    at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:220)
    at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:744)
    at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
    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 Main.start(Main.java:18)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(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$147(WinApplication.java:177)
    ... 1 more
Caused by: java.lang.ClassNotFoundException: MainController
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:920)
    ... 22 more
Exception running application Main

Process finished with exit code 1

Я работаю над Intelij такЯ переместил FXML и Controller на ресурсы, но мне это тоже не помогло.Я также прочитал некоторые ответы на подобные вопросы, но они не помогли мне.Я также пытаюсь использовать FXML Loader, а не родительский корень.Я тоже не понимаю, почему в Intelij источник в Controller в порядке, но в конце ошибки мы видим, что он не найден.Я пытался найти решение весь день и ничего.

Я тоже пытался:

FXMLLoader loader = FXMLLoader.load(getClass().getResource("Main.fxml"));
Parent root = loader.load();

1 Ответ

0 голосов
/ 05 декабря 2018

Файл, который он загружает, является C:/Users/Kowali/Desktop/Projekt0-2/Projekt/target/classes/Main.fxml.Это может быть старый файл.Я предлагаю вам удалить этот файл, выполнить Project -> Rebuild project в IntelliJ и попробовать запустить его снова.

Также вы заявляете, что ваш код

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

, но это не соответствуетс сообщением об ошибке.Так что либо вы не сохранили свой файл .java (но, вероятно, это не так, поскольку вы используете IntelliJ, который сохраняет файлы автоматически), или это не та версия кода, которая соответствует сообщению об ошибке.

...