Мне нужен системный способ установки java.awt.headless
свойство на true
для всех вызовов Java. То есть использование -Djava.awt.headless=true
не вариант, так как java вызывается из мест, к которым у меня нет доступа (например, из другого инструмента, написанного на Java/C/etc .)
Я использую набор инструментов, написанных на Java (в частности, Adobe Air ADT), которые полагаются на классы AWT. Когда я запускаю эти инструменты на консоли, они работают нормально. Но когда я запускаю их из сеанса SSH, они терпят неудачу с java.lang.InternalError: Не удается подключиться к оконному серверу - недостаточно разрешений
. Погуглив, я обнаружил, что установка java.awt.headless в true решит проблему.Это не так, потому что сам ADT порождает дочерние процессы Javaбез-Djava.awt.headless=true
.
Есть ли способ на системном уровне обеспечить установку этого свойства при каждом вызове Java? Может быть, какой-то системный файл свойств awt или аналогичный?
В худшем случае я мог бы попробовать заменить /usr/bin/java
сценарием оболочки, который добавляет этот аргумент к "$@"
, но я надеюсь избежать этого. (Обновление: просто чтобы убедиться, что моя теория верна, попробовал этот хак сценария оболочки, и он действительно решает проблему. Просто надеюсь на более чистое решение)