После прочтения списка сообщений о системе ресурсов я все еще сталкиваюсь с этой стеной.getResource для класса и класса Loader при запуске из jar
Сценарий:
Я в настоящее время разрабатывает JavaFX applicationm, который должен работать как в банке, и как апплет. Я использую простой трюк JavaFX into Swing Applications, чтобы обернуть мое приложение в fxpanel.
Обе версии отлично работают в Eclipse.
Но теперь как банка, так и апплет запускаются в одну и ту же проблему, как только вызывается первый контроллер fx.
Моя структура пакета:
/*
1.
2.
3.
controller.
EntryPoint.class <-- Main
MenuController.class
TabsController.class
ui.
pane.
MainMenu.fxml
Startuppane.fxml
Tabs.fxml
note.
NoteSearch.fxml
NoteView.fxml
*/
// редактировать: Дерево команд из моего распакованной баночке: Pastebin // редактировать Конец
Мое приложение выполняет следующие действия:
Во-первых, он загружает RootLayout from EntryPoint.class
MainBorder = ROOTLOADER.load(EntryPoint.class.getResourceAsStream("/1/2/3/ui/pane/StartupPane.fxml"));
А затем tw o «Дети», «Меню» и «Некоторые вкладки».
Меню прекрасно работает, потому что сам MenuController не загружает другие дочерние элементы.
Теперь актуальная проблема возникает при вызове TabsController и пытается загрузить его собственные дочерние элементы, такие как NoteView.
TP = TABSLOADER.load(EntryPoint.class.getResourceAsStream("/1/2/3/ui/pane/Tabs.fxml")); //Loading The Tabs.
Так TabPane загружается, а когда TabsController в настоящее время пытается загрузить свою собственную Childitems. Я всегда получаю NullPointer в экспортированной банке или webapplet.
Я попытался загрузки ChildItems со следующими методами:
NOTE_SEARCH_LOADER.load(TabsController.class.getResourceAsStream("/1/2/3/ui/note/NoteSearch.fxml"));
отлично работает в Eclipse, но как только экспортируемые причины Неизвестный путь/NullPointer
NOTE_SEARCH_LOADER.load(TabsController.class.getClassLoader().getResourceAsStream("1/2/3/ui/note/NoteSearch.fxml"));
Использование ClassLoader вместо удален первый слэш. Работает в Eclipse, когда экспортировали причины Неизвестный путь/NullPointer
NOTE_SEARCH_LOADER.load(EntryPoint.class.getResourceAsStream("/1/2/3/ui/note/NoteSearch.fxml"));
Использование EntryPoint.class (основной) с Абсолютной Пути. Работает в Eclipse после экспорта. Неизвестный путь/NullPointer при экспорте.
NOTE_SEARCH_LOADER.load(EntryPoint.class.getClassLoader().getResourceAsStream("1/2/3/ui/note/NoteSearch.fxml"));
Использование ClassLoader из моего основного класса, удалено первым слэш. Работает в Eclipse, Неизвестный путь/NullPointer при экспорте.
// edit3: Я сделал еще один тест, скопировав код из TabController в EntryPoint. версия EntryPoint кода работает даже после экспорта в банку или апплета.
У меня есть что-то делать, как вызывается контроллер?
// редактировать Конец
Я почесал голову, и интересно, что еще я мог бы попробовать.
// edit2: NullPointer Causing FXML можно найти в данном местоположении, когда я распакую свой файл fxml.
// редактировать Конец
Может быть, я снова просто не хватает что-то очень очевидное.
Sinclery
Fabian95qw
Список посещенных нитей:
Get a resource using getResource()
Preferred way of loading resources in Java
URL to load resources from the classpath in Java
How to reference javafx fxml files in resource folder?
How do I use Java getResource() to get a resource from a parent directory?
Why does getResource return null
Вы подтвердили, что 'NoteSearch.fxml' действительно находится в файле баночки? –
Я распаковал свой Jar, чтобы убедиться, и да Файлы можно найти в данном местоположении. –