Запустите JavaFX с удаленным расширением кода Visual Studio - PullRequest
0 голосов
/ 25 февраля 2020

Я уже несколько часов пытаюсь запустить приложение JavaFX с помощью расширения для удаленной разработки Visual Studio в контейнере Docker. Я хочу переслать график c приложения с помощью X11. Я уже интегрировал необходимые пакеты для X11 в контейнер, установил переменную среды DISPLAY и установил сокет X11 в контейнер (/tmp/.X11-unix/). К сожалению, так работать не будет ... Всякий раз, когда я пытаюсь запустить приложение, я получаю следующее сообщение об ошибке:

root@c0699153fc1c:/workspaces/JavaFX/src# java --module-path /usr/share/openjfx/lib/ --add-modules javafx.controls,javafx.fxml HelloWorldApplication.java 
Graphics Device initialization failed for :  es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222)
        at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
        ... 1 more
Exception in thread "main" java.lang.RuntimeException: No toolkit found

Я использую openjdk: 11 в качестве базового образа для docker контейнер и установил внутри него следующие пакеты:

  • openjfx
  • libx11-dev
  • libxext-dev
  • libxrender-dev
  • libxtst-dev

Ранее я уже пытался запустить IntelliJ в контейнере Docker, который работает нормально. GUI перенаправляется на мой дисплей, а также там прекрасно работают приложения JavaFX.

Буду признателен за любую помощь в этом вопросе. Может быть, я что-то наблюдаю.


РЕДАКТИРОВАТЬ: Я думаю, что нашел проблему. Кажется, что OpenJDK: 11 и OpenJFX не работают должным образом, даже несмотря на то, что я следовал тоннам учебников ... Итак, теперь я экспортировал JDK, который поставляется с IntelliJ IDEA, и смонтировал его в контейнер, который создается. Кодекса VS. После компиляции файла. java с помощью смонтированного компилятора и его выполнения он работал безупречно.

Так что теперь моя единственная проблема заключается в том, что мне нужна рабочая установка в VS Code для работы приложений JavaFX -> так правильная конфигурация OpenJDK и OpenJFX.

1 Ответ

0 голосов
/ 25 февраля 2020

Наконец-то я смог решить проблему. Таким образом, решение было:

Я создал собственный Dockerfile, где я взял образ openjdk:12 в качестве базы и скопировал библиотеки JavaFX (которые я получил отсюда: https://gluonhq.com/products/javafx/) в контейнер. Кроме того, я добавил все необходимые пакеты для X11 (упомянутые выше). В VS Code после запуска контейнера мне просто нужно было добавить библиотеки в «Библиотеки ссылок». После этого мне пришлось настроить запуск. json и добавить следующие vmArgs: "vmArgs": "--module-path <Path-to-FX-Folder> --add-modules javafx.controls"

Теперь, когда я запускаю приложение, окно будет создано и показано на моем DISPLAY.

...