2014-10-12 3 views
1

Я пытаюсь загрузить мой файл макета FXML следующим образом:расположения FXML не загружается при запуске баночки за пределами Затмения

FXMLLoader loader = new FXMLLoader(); 
loader.setLocation(getClass().getResource("view/MainLayout.fxml")); 
AnchorPane personOverview = (AnchorPane) loader.load(); 

При запуске приложения в Eclipse, все работает, но когда я развернуть приложение с помощью Ant Я получил сообщение об ошибке:

enter image description here

После построения проекта моя структура папок:

enter image description here

и то же в развернутом банке

Я понимаю, что может быть проблема с разницей в разрешении пути внутри баночки и в затмении, но я не могу решить эту проблему. Я использую Java 1.8 и JavaFX 8.

UPDATE 1 Accodring с ошибкой, я думаю, что это решает путь, используя абсолютный адрес (начинается с файла:/C:/...), но следует использовать относительный URL внутри jar файл. Почему он использует абсолютный путь - главный вопрос.

UPDATE 2

Интересно, что корень макет нагрузки успешно, с таким же кодом ..

FXMLLoader loader = new FXMLLoader(); 
loader.setLocation(MainApp.class.getResource("view/RootLayout.fxml")); 
rootLayout = (BorderPane) loader.load(); 

Но внутренняя инициализация макета терпит неудачу.

Стек след:

java -jar MeterChecker.jar 
javafx.fxml.LoadException: unknown path 

at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source) 
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
at javafx.fxml.FXMLLoader.load(Unknown Source) 
at com.wolf6969.checker.MainApp.showMain(Unknown Source) 
at com.wolf6969.checker.MainApp.start(Unknown Source) 
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$153(Unknown Source) 
at com.sun.javafx.application.LauncherImpl$$Lambda$51/138227185.run(Unknown Source) 
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(Unknown Source) 
at com.sun.javafx.application.PlatformImpl$$Lambda$45/584634336.run(Unknown Source) 
at com.sun.javafx.application.PlatformImpl.lambda$null$164(Unknown Source) 
at com.sun.javafx.application.PlatformImpl$$Lambda$47/94326726.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(Unknown Source) 
at com.sun.javafx.application.PlatformImpl$$Lambda$46/501263526.run(Unknown Source) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source) 
at com.sun.glass.ui.win.WinApplication$$Lambda$37/96639997.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: 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.reflect.misc.Trampoline.invoke(Unknown Source) 
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at sun.reflect.misc.MethodUtil.invoke(Unknown Source) 
... 18 more 
Caused by: java.lang.NullPointerException 
at com.wolf6969.checker.service.SmsService.getCommandKeys(Unknown Source) 
at com.wolf6969.checker.view.MainController.setupControls(Unknown Source) 
at com.wolf6969.checker.view.MainController.initialize(Unknown Source) 
... 27 more 
Exception in Application stop 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(Unknown Source) 
at com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source) 
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 stop method 
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source) 
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$147(Unknown Source) 
at com.sun.javafx.application.LauncherImpl$$Lambda$48/752848266.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
at com.wolf6969.checker.MainApp.stop(Unknown Source) 
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$154(Unknown Source) 
at com.sun.javafx.application.LauncherImpl$$Lambda$147/1418913435.run(Unknown Source) 
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(Unknown Source) 
at com.sun.javafx.application.PlatformImpl$$Lambda$45/584634336.run(Unknown Source) 
at com.sun.javafx.application.PlatformImpl.lambda$null$164(Unknown Source) 
at com.sun.javafx.application.PlatformImpl$$Lambda$47/94326726.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(Unknown Source) 
at com.sun.javafx.application.PlatformImpl$$Lambda$46/501263526.run(Unknown Source) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source) 
at com.sun.glass.ui.win.WinApplication$$Lambda$37/96639997.run(Unknown Source) 
... 1 more 
Exception running application com.wolf6969.checker.MainApp 
+0

попробуйте использовать MainApp.class.getResource вместо getclass.getResource – vinay

+0

попробовал, ничего не изменилось. Прекрасно работает в eclipse, ту же ошибку при выполнении jar. Теперь я использую следующий код: 'FXMLLoader загрузчик = новый FXMLLoader()' ' loader.setLocation (MainApp.class.getResource ("Вид/RootLayout.fxml");' – Wolf6969

+0

попробуйте запустить баночку из командной строки и post full trace – vinay

ответ

1

Я использую следующий код

FXMLLoader loader=new FXMLLoader(Main.class.getResource("views/MainFrame.fxml")); 
AnchorPane rootpane=(AnchorPane) loader.load(); 

и она работает, как это должно

редактировать: после глядя на ваш след, я думаю, что проблема в том, в вашем контроллере, попробуйте взглянуть на это link

Caused by: java.lang.NullPointerException 
at com.wolf6969.checker.service.SmsService.getCommandKeys(Unknown Source) 
at com.wolf6969.checker.view.MainController.setupControls(Unknown Source) 
at com.wolf6969.checker.view.MainController.initialize(Unknown Source) 
+0

Вы правы, проблема в том, что папка с файлами с некоторыми файлами конфигурации не скопирована для развертывания каталога. вы много! Теперь это работает – Wolf6969

Смежные вопросы