Android: Исключение в org.eclipse.swt.SWTError: больше не обрабатывается [gtk_init_check() не удалось]

Я пытаюсь настроить среду, в которой я могу разрабатывать приложения для Android на сервере Ubuntu 13.04. Поэтому я могу использовать только командную строку.

Когда я запускаю android, просто чтобы проверить, работает ли он, я получаю:

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 com.android.sdkuilib.internal.repository.ui.SdkUpdaterWindowImpl2.createShell(SdkUpdaterWindowImpl2.java:168)
    at com.android.sdkuilib.internal.repository.ui.SdkUpdaterWindowImpl2.open(SdkUpdaterWindowImpl2.java:137)
    at com.android.sdkuilib.repository.SdkUpdaterWindow.open(SdkUpdaterWindow.java:111)
    at com.android.sdkmanager.Main.showSdkManagerWindow(Main.java:356)
    at com.android.sdkmanager.Main.doAction(Main.java:334)
    at com.android.sdkmanager.Main.run(Main.java:120)
    at com.android.sdkmanager.Main.main(Main.java:103)

Что я сделал до сих пор:

  • apt-get install ant
  • Загрузили пакет ADT из http://developer.android.com/sdk/index.html
  • Распакуйте его в моем домашнем каталоге /home/camilstaps
  • Добавлен /home/camilstaps/adt-bundle-linux/tools в мою переменную окружения PATH

Что я могу сделать для устранения этого исключения?

Ответ 1

Проблема заключалась в том, что android пытался открыть графический дисплей, чего не мог. android просто не может быть запущен на сервере без графического экрана.

Однако с некоторыми параметрами можно использовать android. Например, см. здесь:

android create project \
--target <target_ID> \
--name <your_project_name> \
--path path/to/your/project \
--activity <your_activity_name> \
--package <your_package_namespace>

Ответ 2

Вы можете обновить sdk из командной строки, используя опцию -u (без интерфейса).

./android update sdk -u

Ответ 3

Если вы хотите запустить Android IDE (это Eclipse), вам понадобится X-сервер для его отображения. Я бы рекомендовал не пытаться разрабатывать Android-приложения на безголовом сервере, так как вам понадобится дисплей для использования среды IDE и запуска вашего приложения в эмуляторе, чтобы вы могли протестировать его, не мигая с ним на устройстве каждый раз, когда вы что-то меняете.

Если вы хотите разработать приложение без дисплея X, вам придется делать все вручную, что обычно делает IDE для вас, и использовать редактор, который не требует X, например vim или emacs.

Ответ 4

Если вы используете ssh -X в поле и запускаете андроид, он должен использовать xserver на вашем компьютере. Иногда мне приходится запускать другое приложение, например. Firefox, чтобы заставить X работать до запуска Android.

Ответ 5

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