从SSH运行adp(Adobe AIR开发人员工具)

时间:2012-05-18 23:59:05

标签: air adt headless

尝试从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进程,因此该解决方案不起作用。

我可以通过使用包含以下内容的shell脚本替换/ usr / bin / java来解决问题:

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

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

2 个答案:

答案 0 :(得分:0)

我刚注意到这是一个非常简单的解决方法。我在OS X上对此进行了测试,虽然不完全是一个解决方案,但可能还不错。只需确保尝试通过ssh adt的用户有一个打开的控制台会话,adt就可以正常运行。

答案 1 :(得分:0)

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

Adob​​e有一个相当无益的主题:

  

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

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

  

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