加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在OS X上全局设置java系统属性?

发布时间:2020-12-14 05:04:27 所属栏目:Java 来源:网络整理
导读:短篇故事 我需要一个系统级的方法来将java.awt.headless属性设置为所有java调用的true.也就是说,使用-Djava.awt.headless = true不是一个选项,因为正在从我无法访问的地方(例如从另一个使用Java / C / etc编写的工具)中调用java. 很长的故事 我正在使用一堆
短篇故事

我需要一个系统级的方法来将java.awt.headless属性设置为所有java调用的true.也就是说,使用-Djava.awt.headless = true不是一个选项,因为正在从我无法访问的地方(例如从另一个使用Java / C / etc编写的工具)中调用java.

很长的故事

我正在使用一堆依靠AWT类编写的工具(特别是Adobe的Air ADT).当我在控制台上运行这些工具时,它们工作正常.但是当我从SSH会话中运行它们时,它们会以java.lang.InternalError失败:无法连接到窗口服务器 – 没有足够的权限. Googling在我发现,将java.awt.headless设置为true将会解决问题.它没有,这是因为ADT本身产生孩子Java进程没有-Djava.awt.headless = true.

是否有任何系统级的方式来确保在调用Java时设置此属性?也许一些系统的awt属性文件或等效文件?

最糟糕的情况我可以尝试将/usr/bin/java替换为一个shell脚本,将此参数添加到“$@”,但我希望避免这种情况. (更新:为了确保我的理论是正确的,尝试这个shell脚本,并且它解决了这个问题,只是希望有一个更清洁的解决方案)

解决方法

它似乎支持JAVA_TOOL_OPTIONS环境变量至少由Java 6添加到Sun / Oracle JVM.它在 Java 8 documentation中进行了描述.我还没有测试,但似乎是在 OpenJDK too.这似乎是一个更标准化的解决方案比其他答案在这里.

我能够解决我遇到的问题:

JAVA_TOOL_OPTIONS = -Djava.awt.headless = true ant …

这成功地将属性传播到从Ant调用的Gradle构建脚本(./gradlew).通过比较ant -Djava.awt.headless = true …没有将属性传播到子进程.发现这个解决方案最初在a Gradle-related gist on github中描述.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读