【发布时间】:2012-05-24 12:56:13
【问题描述】:
短篇小说
我需要一种系统级别的方法来将 java.awt.headless 属性设置为 true对于所有 java 调用。也就是说,使用 -Djava.awt.headless=true 不是一个选项,因为 java 是从我无法访问的地方调用的(例如,从另一个用 Java/C/等编写的工具中)
说来话长
我正在使用一堆用 Java 编写的工具(特别是 Adobe 的 Air ADT),它们依赖于 AWT 类。当我在控制台上运行这些工具时,它们工作正常。但是当我从 SSH 会话运行它们时,它们会以java.lang.InternalError: Can't connect to window server - not enough permissions 失败。谷歌搜索我发现将 java.awt.headless 设置为 true 可以解决问题。它没有,这是因为 ADT 本身会产生子 Java 进程没有-Djava.awt.headless=true。
是否有任何系统级方法可以确保在调用 Java 时设置此属性?也许一些系统 awt 属性文件或等效文件?
在最坏的情况下,我可以尝试用一个将这个参数添加到"$@" 的 shell 脚本替换 /usr/bin/java,但我希望避免这种情况。 (更新:为了确保我的理论是正确的,尝试了这个 shell script hack,它确实解决了问题。只是希望有一个更干净的解决方案)
【问题讨论】:
-
我想您可以接受您的更新作为有效答案。