Хорошо, после того, как я провел еще какое-то исследование и попробовал еще несколько вариантов, вот что я придумал:
Могу ли я использовать java.awt.Robot из демона? Нет.
Далее в своем вопросе я немного уточнил:
Можно ли как-нибудь использовать класс java.awt.Robot из процесса демона? Нет. Как и выше.
Могу ли я порождать вторичный процесс из процесса демона, который не является "безголовым окружением"? Не то, чтобы я мог понять. В любом случае, если я это сделаю, будет много работы.
Или есть лучший способ для меня получить результат, подобный «услуге», который не имеет этого ограничения? Да! Используйте среду рабочего стола! В моем случае, так как я использовал Ubuntu, среда рабочего стола была Gnome. В Gnome есть функция Startup Applications , которая запускает файлы .desktop в глобальном масштабе и для отдельных пользователей, как описано здесь . Они также предоставляют информацию о структуре этих файлов .desktop здесь . Я добавил файл .desktop в /etc/xdg/autostart
(глобальная папка автозапуска), который запускал мой «сервис» Java, и он работал как удовольствие.