Итак, я успешно импортировал пользовательский класс в свой класс .fxml следующим образом.
<?import com.company.project.controller.myCustonClass?>
Все работает нормально, и моя программа работает так, как ожидалось. После того, как я добавил pro guard в свое приложение, программа не работает. я получаю
FXMLLoadException
Подробная информация об исключениях приведена ниже [взято из log.out]
myCustonClass is not a valid type.
file:/F:/xxxxx/xxx/xxx/project-name/target/jfx/app/project-name.jar!/fxml/MyScreen.fxml:21
Я нашел обходной путь для этого. Я просто добавляю исключение в файл .conf, подобное этому
-keep class com.company.project.controller.myCustonClass
Это единственный способ справиться с проблемой. Имя класса выглядит странно в отладчике, в то время как все остальные классы были «запутаны».
Как было предложено в ProGuard ломает приложение JavaFX, я добавил файл .txt с заглавными буквами, но мое приложение не работает.
Я использовал отладчик JD-GUI и вижу, что все запутанные имена классов имеют заглавные буквы. Так что это не похоже на проблему с «fxml, неспособным загрузить имена классов с маленькой буквы»
Обновление: я использовал другой отладчик jadx и вижу оператор импорта:
import com.company.project.b.A
но в файле .fxml я вижу тег
<CustonClass ................../>