2

尝试从 SSH 会话运行 adt 会导致:

Exception in thread "main" java.lang.InternalError: Can't connect to window server - not enough permissions.
 at java.lang.ClassLoader$NativeLibrary.load(Native Method)
 at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1827)
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1724)
 at java.lang.Runtime.loadLibrary0(Runtime.java:823)
 at java.lang.System.loadLibrary(System.java:1045)
 at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.awt.Toolkit.loadLibraries(Toolkit.java:1605)
 at java.awt.Toolkit.<clinit>(Toolkit.java:1627)
 at java.awt.Dimension.<clinit>(Dimension.java:70)
...

通常这可以通过传递-Djava.awt.headless=true给java来解决。但是,adt 会在没有此参数的情况下生成其他 java 进程,因此此解决方案不起作用。

我能够通过将 /usr/bin/java 替换为包含以下内容的 shell 脚本来破解我的方法:

java.old -Djava.awt.headless=true "$@"

但是,这会影响在此框上运行的所有 java 进程,从而导致许多其他问题。一定有更好的方法...

4

2 回答 2

0

我刚刚注意到有一个非常简单的解决方法。我在 OS X 上对此进行了测试,虽然不完全是一个解决方案,但可能已经足够好了。只需确保尝试通过 ssh 进行 adt 的用户具有打开的控制台会话,并且 adt 将运行良好。

于 2012-05-19T00:09:08.887 回答
0

您倾向于找到的唯一解决方法是让您的 Jenkins 用户成为 OSX 上的实际用户。
我一直不得不依靠在我的 OSX 构建盒上将 Jenkins 设置为普通用户。即使使用 Xvfb Jenkins 插件也无济于事。这非常令人沮丧。

Adobe在这里有一个相当无用的线程:

http://forums.adobe.com/message/4162406

这里还有另一个线程用于将部分作业包装在 shell 脚本中:

https://groups.google.com/forum/?fromgroups=#!topic/fluint-discussions/tL6AEWKgDfw

于 2012-12-28T06:31:21.207 回答