Клиент / серверные jars - исключение в потоке "main" java.lang.reflect.InvocationTargetException - PullRequest
0 голосов
/ 16 мая 2019

У меня есть проект javafx в eclipse, готовый к запуску. У меня есть клиент и сервер. Я попытался запустить сервер и клиент в Eclipse, и все работает нормально, но когда я экспортировал в пригодные для запуска jar, один на сервер и один на клиент, jar сервера работает нормально, но клиент выдает исключение: Исключение в потоке "main" java .lang.reflect.InvocationTargetException

хотя он прекрасно работает перед экспортом в Eclipse. Сервер и клиент являются приложениями javafx, которые запускаются с графическим интерфейсом.

ClientLauncher.java:

package client;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;

public class ClientLauncher extends Application {

    public GCMClient gcmClient;

    private String host = "localhost";
    private int port = 5555;

    private double xOffset = 0;
    private double yOffset = 0;

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

    }

    @Override
    public void start(Stage PrimaryStage) throws Exception {

        System.out.println("Client Connection Established");
        Parent root = FXMLLoader.load(getClass().getResource("/sources/ServerLogin.fxml"));
        root.setOnMousePressed(new EventHandler<MouseEvent>() {

            public void handle(MouseEvent event) {
                xOffset = event.getSceneX();
                yOffset = event.getSceneY();
            }
        });
        root.setOnMouseDragged(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                PrimaryStage.setX(event.getScreenX() - xOffset);
                PrimaryStage.setY(event.getScreenY() - yOffset);
            }
        });

        Scene scene = new Scene(root);
        PrimaryStage.setScene(scene);
        PrimaryStage.show();
    }

}

Исключение, которое я получаю:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.RuntimeException: Exception in Application start method
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Location is required.
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
        at javafx.fxml/javafx.fxml.FXMLLoader.load(Unknown Source)
        at client.ClientLauncher.start(ClientLauncher.java:33)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
        at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)

1 Ответ

0 голосов
/ 16 мая 2019

Решено:

Я неправильно написал ServerLogin.fxml в

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

Который называется "ServerLogIn.fxml" в моем случае.

Похоже, что имя fxml чувствительно к регистру в исполняемом фляге, но не в затмении. Вот почему он хорошо работал в затмении и не работал в банке.

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