Я пишу плагин, использующий JavaFX для нашего Flagship Application (на работе). Flagship App имеет Java-клиент, который использует Swing, и позволяет пользователю выполнять макросы, написанные на Java, или устанавливать плагины, написанные на Java.
Обратите внимание, что эти макросы / плагины могут выполняться самостоятельно и не зависят от клиента Java, поэтому нет необходимости размещать компоненты JavaFX в JFXPanel.
Проблема, с которой мы столкнулись, заключается в удобстве отладки. Мы запускаем макрос или плагин, который использует JavaFX, и после того, как мы его убиваем (используя stop () и Platform.exit ()), мы должны полностью перезапустить Java-клиент Flagship App (то есть JVM), прежде чем мы сможем повторно запустить Макрос / плагин JavaFX, благодаря всей ошибке «Запуск приложения нельзя вызывать более одного раза». Флагманское приложение загружается относительно быстро, но ему все еще требуется минута или две, чтобы полностью загрузить и открыть новый файл (невозможно запустить макрос или плагин без открытого файла).
Итак, я видел несколько предложений сделать последующие вызовы для Application.launch () в вызов runLater или использовать службу Executor, но ни один из них, кажется, действительно не достигает того, что мне нужно, так как поток платформы, кажется, отключен (графический интерфейс JavaFX закрывается должным образом, и поток исчезает из списка запущенных потоков). Похоже, что у JVM есть логическое значение, которое устанавливается в true при вызове Application.launch (), так что вы не можете перезапустить приложение JavaFX, не убив JVM.
Мне нужно иметь возможность запускать приложение JavaFX несколько раз на одной и той же виртуальной машине Java. Так возможно ли это сделать?