org.eclipse.swt.SWTError: Больше нет дескрипторов [gtk_init_check() не удалось] при запуске spoon.sh в ubuntu

Вопрос или проблема

Когда я запускаю файл spoon.sh в Ubuntu, я получаю следующую ошибку:

[santosh@sbx data-integration]$ ./spoon.sh
/home/decathlon/Pentaho-5.0.1/data-integration
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
    в org.eclipse.swt.SWT.error(Неизвестный источник)
    в org.eclipse.swt.widgets.Display.createDisplay(Неизвестный источник)
    в org.eclipse.swt.widgets.Display.create(Неизвестный источник)
    в org.eclipse.swt.graphics.Device.<init>(Неизвестный источник)
    в org.eclipse.swt.widgets.Display.<init>(Неизвестный источник)
    в org.eclipse.swt.widgets.Display.<init>(Неизвестный источник)
    в org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:582)
    в sun.reflect.NativeMethodAccessorImpl.invoke0(Нативный метод)
    в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    в java.lang.reflect.Method.invoke(Method.java:606)
    в org.pentaho.commons.launcher.Launcher.main(Launcher.java:134)

Не могли бы вы помочь мне решить эту проблему?

У меня была такая же проблема (на Ubuntu 14.04). Оказалось, что это проблема с правами доступа. Она была решена путем запуска spoon.sh от имени пользователя, который имеет права на доступ к графической среде. На Ubuntu Desktop пользователь, которого вы используете для входа, – это безопасный выбор. В качестве альтернативы, предоставьте вашему пользователю Pentaho необходимые права.

Поскольку у меня ушло некоторое время на выяснение этого, я хотел бы добавить, что можно установить права с помощью xhost:

xhost +local:

Найдено здесь: https://wiki.archlinux.org/index.php/Xhost

Если вы получаете доступ к Ubuntu через VNC, убедитесь, что вы запускаете spoon.sh от имени того же пользователя, что и VNC сервер.

Ответ или решение

При запуске файла spoon.sh в Ubuntu вы сталкиваетесь с ошибкой org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed], что указывает на проблему с инициализацией графического интерфейса. В этом ответе мы подробно рассмотрим возможные причины возникновения этой ошибки, а также предложим способы ее решения.

Причины ошибки

  1. Проблемы с разрешениями:
    Убедитесь, что пользователь, под которым вы запускаете spoon.sh, имеет разрешения на доступ к графической среде. Особенно это касается пользователей, которые не входят в группу sudo или admin, или когда вы используете систему с ограниченными правами.

  2. Запуск через VNC:
    Если вы используете удаленный доступ через VNC, необходимо помнить, что скрипт spoon.sh должен запускаться от имени того же пользователя, который обслуживает VNC-сессии. Попытка запуска от другого пользователя может привести к ошибкам, связанным с доступом к графической среде.

  3. Нехватка ресурсов:
    Ошибка No more handles также может свидетельствовать о нехватке системных ресурсов или исчерпании системных дескрипторов. В таких случаях может помочь перезапуск рабочей среды или системы.

Решения проблемы

  1. Изменение прав доступа:
    Для изменения прав доступа к графической среде вы можете использовать команду xhost. Откройте терминал и введите следующую команду:

    xhost +local:

    Эта команда разрешит доступ к X-серверу для всех локальных пользователей. Этот шаг может быть временным решением, так как открывает доступ. Рекомендуется ограничить такие права в будущем.

  2. Запуск от имени правильного пользователя:
    Убедитесь, что вы вошли в систему под именем пользователя, у которого есть доступ к графической среде (обычно это пользователь, выполняющий вход на рабочий стол Ubuntu). Если вы используете VNC, запустите spoon.sh с тем же пользователем, что и VNC-сервер.

  3. Перезапуск X-сервера:
    Если ошибка связана с исчерпанием ресурсов, попробуйте перезапустить вашу сессию или вход в систему. Это может освободить занятые системные дескрипторы.

  4. Проверка версии Java и SWT:
    Убедитесь, что установленная версия Java совместима с Pentaho (рекомендуется использовать JDK 8 или 11 для некоторых версий Pentaho). Также убедитесь, что у вас установлены соответствующие библиотеки SWT, которые подходят для вашей операции.

Заключение

Ошибка org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed] может возникать по нескольким причинам, но в большинстве случаев проблема связана с правами доступа и совместимостью пользователя с графической средой. Применение приведенных выше рекомендаций зачастую помогает успешно решить эту проблему. Если у вас возникнут дополнительные вопросы или трудности, рекомендуется обратиться к официальной документации Pentaho или сообществу пользователей для получения дополнительной поддержки.

Оцените материал
Добавить комментарий

Капча загружается...