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