JavaFX invocationtargetexception i konfiguracja Mavena

0

Witajcie!
Klepię sobie bezużyteczny projekt, który ma pakować moje projekty (kody źródłowe, grafiki, wszystko) do zipa.

Mam taki problem - zacząłem pisać kod jeszcze raz, ponieważ poprzedni był słaby. Tym razem stosuję się do rady @Shalom (która rzeczywiście niesamowicie pomaga, dziękuję jeszcze raz).

Skopiowałem sobie widok programu, który mam w pliku fxml. Plik z taką samą nazwą jak wcześniej wrzuciłem do takiej samej części paczki (view) jak był do tej pory (słowem nic się nie zmieniło w strukturze), a po skopiowaniu kodu dostaję InvocationTargetException.

**Struktura **
screenshot-20170127195142.png

Korzystam z własnego kontrolera, który sam dodaję przed załadowaniem programu metodą FXMLLoader.load(), więc nie tutaj (chyba) tkwi problem. Czytałem, że może to być przyczyna braku adnotacji @FXML, więc umieściłem ją wszędzie gdzie mogłem w kontrolerze ( :P ). Kombinowałem ze ścieżką do pliku fxml i nic.

Stack trace:

Exception in Application start method
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 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(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: Exception in Application start method
	at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
	at java.lang.Thread.run(Unknown Source)
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 com.burdzi0.packager.App.start(App.java:39)
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
	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
Exception running application com.burdzi0.packager.App

Source : BitBucket repo

Druga sprawa to czy dobrze skonfigurowałem pom.xml? Mam z nim problemy (czytaj: nie ogarniam go wcale) i próbując go odpalić (według tego cuda) otrzymuję
screenshot-20170127195012.png
Z góry dzięki za jakąkolwiek pomoc :)

0

Pisze jak byk: Caused by: java.lang.IllegalStateException: Location is not set.

Trzymaj swoje widoki fxml w folderze src/main/resources. Czyli w Twoim przypadku src/main/resources/view
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

0

@nie100sowny: Okej, dzięki już działa ;)
Jeszcze tylko pytanie: jak skonfigurować pom.xml aby Maven tworzył mi Runnable Jar i jak go odalić?

0

Zasadniczo to FX ma własny zalecany system do budowania wykonywalnych jarów, poprzez plik build.fxbuild - pod spodem korzysta to z anta a nie z mavena i ma duże możliwości konfiguracyjne typu tworzenia natywnego instalatora, natywnego pliku wykonywalnego, podpisywanie cyfrowe, etc. Przy bardziej skomplikowanych bulidach jest to często jedyne rozwiązanie choć może być trochę trudne w konfiguracji - jakbyś chciał iść tą drogą to mam gdzieś gotowe pliki anta z kompletną konfiguracją - mogę podrzucić.
Jest też jakiś programik odpalany z CL, który pozwala zbudować jara opisany tu: http://docs.oracle.com/javafx/2/deployment/deploy_overview.htm, zdarzyło mi się z niego korzystać ale nie w jakiś bardzo zaawansowany sposób.
Jeżeli jednak chcesz zostać przy mavenie to to wygląda obiecująco: https://github.com/javafx-maven-plugin/javafx-maven-plugin - nie korzystałem ale jakbyś wypróbował to daj znać czy daje radę.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.