Я получаю ошибки при попытке создать исполняемый файл jar для моего java проекта из Eclipse. После генерации файла я запускаю
java -jar RunnableAct.jar
, который выдает мне много ошибок, таких как:
Exception in Application constructor
Exception in thread "main" java.lang.RuntimeException: Unable to construct Application instance: class application.Main$Main2
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:907)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$160(LauncherImpl.java:819)
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)
Caused by: java.lang.IllegalStateException: Location is not set.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at application.AppController.RedirectTo(AppController.java:142)
at application.AppController.<init>(AppController.java:131)
at application.Main$Main2.<init>(Main.java:46)
... 10 more
Мой основной класс выглядит так :
public class Main {
public static void main(String[] args) {
Application.launch(Main2.class, args);
}
public static class Main2 extends Application {
AppController controller = new AppController();
@Override
public void start(Stage stage) throws Exception{
// redirection to main controller class's main method where intro page is called
Scene scene = new Scene(controller);
stage.setScene(scene);
stage.setOnCloseRequest(close -> System.exit(0));
stage.show();
}
}
}
Я создал вышеупомянутый основной метод после нахождения некоторых предложений здесь, в противном случае первая версия была:
public class Main extends Application {
public AppController controller = new AppController();
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) throws Exception{
// redirection to main controller class's main method where intro page is called
Scene scene = new Scene(controller);
stage.setScene(scene);
stage.setOnCloseRequest(close -> System.exit(0));
stage.show();
}
}
Когда вызывается класс AppController, он вызывает следующее Метод:
public AppController() {
RedirectTo("/fxml/Intro.fxml");
}
public void RedirectTo(String url) {
FXMLLoader loader = new FXMLLoader(getClass().getResource(url));
loader.setController(this);
loader.setRoot(this);
try {
loader.load();
} catch (IOException ex) {
}
}
оба печати:
java .lang.RuntimeException: Невозможно создать приложение класса экземпляра приложения. Основной $ Main2
или с другим основным Метод:
java .lang.RuntimeException: Невозможно создать приложение класса экземпляра приложения. Основной
Я бы действительно оценил вашу помощь, спасибо!