Вопрос или проблема
Когда я запускаю файл 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]
, что указывает на проблему с инициализацией графического интерфейса. В этом ответе мы подробно рассмотрим возможные причины возникновения этой ошибки, а также предложим способы ее решения.
Причины ошибки
-
Проблемы с разрешениями:
Убедитесь, что пользователь, под которым вы запускаетеspoon.sh
, имеет разрешения на доступ к графической среде. Особенно это касается пользователей, которые не входят в группуsudo
илиadmin
, или когда вы используете систему с ограниченными правами. -
Запуск через VNC:
Если вы используете удаленный доступ через VNC, необходимо помнить, что скриптspoon.sh
должен запускаться от имени того же пользователя, который обслуживает VNC-сессии. Попытка запуска от другого пользователя может привести к ошибкам, связанным с доступом к графической среде. -
Нехватка ресурсов:
ОшибкаNo more handles
также может свидетельствовать о нехватке системных ресурсов или исчерпании системных дескрипторов. В таких случаях может помочь перезапуск рабочей среды или системы.
Решения проблемы
-
Изменение прав доступа:
Для изменения прав доступа к графической среде вы можете использовать командуxhost
. Откройте терминал и введите следующую команду:xhost +local:
Эта команда разрешит доступ к X-серверу для всех локальных пользователей. Этот шаг может быть временным решением, так как открывает доступ. Рекомендуется ограничить такие права в будущем.
-
Запуск от имени правильного пользователя:
Убедитесь, что вы вошли в систему под именем пользователя, у которого есть доступ к графической среде (обычно это пользователь, выполняющий вход на рабочий стол Ubuntu). Если вы используете VNC, запуститеspoon.sh
с тем же пользователем, что и VNC-сервер. -
Перезапуск X-сервера:
Если ошибка связана с исчерпанием ресурсов, попробуйте перезапустить вашу сессию или вход в систему. Это может освободить занятые системные дескрипторы. -
Проверка версии Java и SWT:
Убедитесь, что установленная версия Java совместима с Pentaho (рекомендуется использовать JDK 8 или 11 для некоторых версий Pentaho). Также убедитесь, что у вас установлены соответствующие библиотеки SWT, которые подходят для вашей операции.
Заключение
Ошибка org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
может возникать по нескольким причинам, но в большинстве случаев проблема связана с правами доступа и совместимостью пользователя с графической средой. Применение приведенных выше рекомендаций зачастую помогает успешно решить эту проблему. Если у вас возникнут дополнительные вопросы или трудности, рекомендуется обратиться к официальной документации Pentaho или сообществу пользователей для получения дополнительной поддержки.