android:org.eclipse.swt.swt中出现异常恐怖:不再有句柄[gtk_init_check()失败]

android:org.eclipse.swt.swt中出现异常恐怖:不再有句柄[gtk_init_check()失败],android,ubuntu,command-line,adt,Android,Ubuntu,Command Line,Adt,我正在尝试建立一个环境,在这个环境中我可以在Ubuntu服务器13.04上开发android应用程序。因此,我只能使用命令行 当我运行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.ecli

我正在尝试建立一个环境,在这个环境中我可以在Ubuntu服务器13.04上开发android应用程序。因此,我只能使用命令行

当我运行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)
线程“main”org.eclipse.swt.swt中出现异常:不再有句柄[gtk_init_check()失败] 位于org.eclipse.swt.swt.error(未知源) 位于org.eclipse.swt.widgets.Display.createDisplay(未知源) 位于org.eclipse.swt.widgets.Display.create(未知源) 位于org.eclipse.swt.graphics.Device(未知来源) 位于org.eclipse.swt.widgets.Display(未知源) 位于org.eclipse.swt.widgets.Display(未知源) 位于org.eclipse.swt.widgets.Display.getDefault(未知源) 位于org.eclipse.swt.widgets.Shell(未知来源) 位于org.eclipse.swt.widgets.Shell(未知来源) 位于com.android.sdkuilib.internal.repository.ui.SdkUpdaterWindowImpl2.createShell(SdkUpdaterWindowImpl2.java:168) 位于com.android.sdkuilib.internal.repository.ui.SdkUpdaterWindowImpl2.open(SdkUpdaterWindowImpl2.java:137) 位于com.android.sdkuilib.repository.SdkUpdaterWindow.open(SdkUpdaterWindow.java:111) 位于com.android.sdkmanager.Main.showSdkManagerWindow(Main.java:356) 位于com.android.sdkmanager.Main.doAction(Main.java:334) 位于com.android.sdkmanager.Main.run(Main.java:120) 位于com.android.sdkmanager.Main.Main(Main.java:103) 到目前为止我所做的:

  • apt get install ant
  • 从下载“ADT包”
  • 将其解压缩到我的主目录
    /home/camilstaps
  • /home/camilstaps/adt bundle linux/tools
    添加到my
    PATH
    环境变量

如何解决此异常?

如果要运行Android IDE(即Eclipse),需要一个X服务器来显示它。我建议不要尝试在无头服务器上开发Android应用程序,因为你需要一个显示器来使用IDE,并在模拟器中运行你的应用程序,这样你就可以测试它,而无需在每次更改内容时都将其刷新到设备上


如果你想开发没有X显示的应用程序,你必须手工操作,IDE通常会为你做的一切,并且使用一个不需要X的编辑器,比如
vim
emacs

这里的问题是
android
试图打开一个图形显示,但它无法打开
android
无法在没有图形屏幕的服务器上运行

但是,通过一些参数,可以使用android。例如,请参见:

android创建项目\
--目标\
--名字\
--路径路径/到/您的/项目\
--活动\
--包装

它看起来像一个旧的eclipse bug。它与JavaVM相关,如果可以排除与X环境相关的问题,您可以尝试其他VM。

您可以使用
-u
(无UI)选项从命令行更新sdk


如果您将ssh-X放入框中并启动android,它应该在您的机器上使用xserver。有时我必须启动另一个应用程序,例如Firefox,以便在启动android之前让X正常工作

在我的例子中,我尝试安装GTK软件包(使用'sudo apt get install'),但错误仍然一再出现

要识别错误,请检查日志路径:/configuration/*.log

您将注意到错误日志中存在的堆栈跟踪强调了与显示相关的问题Eclipse要求启动X服务器,以便正确加载用户界面。默认情况下,Root用户不启动X-server。

因此,我切换到另一个用户,并能够成功地打开eclipse

root@anotheruser:/eclipse/configuration# exit
logout
anotheruser@anotheruser:~$ cd /eclipse/
anotheruser@anotheruser:/eclipse$ ./eclipse

谢谢你的建议!最后,我不会真的在服务器上开发应用程序,有时我只想在服务器上构建它们。同样相关的(不是遇到异常,而是从命令行安装的附加细节):该命令盲目地安装所有东西。。。如何更新安装的内容?注意到同样的行为,当以
su username
运行它时(它没有与GDM的会话,因此在
X
下没有
显示
)。可以想象,它仍然可以工作-在为输出分配显示时,在运行
/android
@syslogic之前,您可以尝试使用
sudo-E-u username
,然后保留您自己的环境。认为
export display=:0
export display=:0.0
应该选择第一个可用的显示,当存在任何正在进行的
X11
(gdm)会话时。当运行headless时,也可以选择类似的VNC显示。这里的答案解释了如何验证显示:;条件
ForwardX11 yes
也应相关,以获得输出的任何有效显示。。。刚才注意到,
/android
命令已经过时,现在是
tools/bin/sdkmanager
。@syslogic-hmm,那么您似乎想做一些与此问题无关的事情。我想在没有GUI的情况下使用
android
命令。
./android update sdk -u
root@anotheruser:/eclipse/configuration# exit
logout
anotheruser@anotheruser:~$ cd /eclipse/
anotheruser@anotheruser:/eclipse$ ./eclipse