Как исправить "Исключение в потоке" main "org.eclipse.swt.SWTError: Больше не обрабатывает ошибку [gtk_init_check () fail]" в контейнере докера - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь запустить uiautomatorviewer (из инструментов Android SDK) в контейнере докера. Но я получаю ниже ошибку при запуске док-контейнера.

Exception in thread "main" org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
    at org.eclipse.swt.SWT.error(Unknown Source)
    at org.eclipse.swt.widgets.Display.createDisplay(Unknown Source)
    at org.eclipse.swt.widgets.Display.create(Unknown Source)
    at org.eclipse.swt.graphics.Device.<init>(Unknown Source)
    at org.eclipse.swt.widgets.Display.<init>(Unknown Source)
    at org.eclipse.swt.widgets.Display.<init>(Unknown Source)
    at org.eclipse.swt.widgets.Display.getDefault(Unknown Source)
    at org.eclipse.swt.widgets.Shell.<init>(Unknown Source)
    at org.eclipse.swt.widgets.Shell.<init>(Unknown Source)
    at org.eclipse.jface.window.Window.createShell(Window.java:487)
    at org.eclipse.jface.window.Window.create(Window.java:430)
    at org.eclipse.jface.window.Window.open(Window.java:790)
    at com.android.uiautomator.UiAutomatorViewer.main(UiAutomatorViewer.java:78)

Я попытался поделиться файлом .Xauthority с контейнером и использовал ту же самую команду ниже для запуска контейнера

docker run --privileged -d -p 4723:4723 -v /dev/bus/usb:/dev/bus/usb -v /home/app/build/outputs/apk/debug:/root/tmp -v $HOME/.Xauthority:/root/.Xauthority:rw --env="DISPLAY" --name container-sdk local/sdk:latest

Выдержка из Dockerfile

FROM ubuntu:16.04
WORKDIR /root

***** downloads Android SDK ***
CMD ["sh", "-c", "export DISPLAY=':0.0' & uiautomatorviewer"]

Я успешно запустил браузер Firefox внутри док-контейнера, просто чтобы убедиться, что я могу запускать приложения с графическим интерфейсом внутри контейнера. Но uiautomatorviewer запускается не так, как Firefox. Вместо этого он выдает исключение.

Любая помощь приветствуется, спасибо.

...