Хорошо, у меня есть такая простая Java-программа:
import java.awt.AWTException;
import java.awt.Robot;
class Program
{
public static void main(String[] args) throws AWTException
{
Robot robot = new Robot();
// do some things with the robot
}
}
Я хочу запустить эту программу на моем Raspberry Pi при запуске, поэтому я поместил ее в сценарий оболочки, который я вызвал в конце файла /etc/rc.local
. Это мой скрипт:
cd /home/pi/Desktop
java Program
Всякий раз, когда загружается мой Raspberry Pi, моя программа выдает исключение, говорящее Can't connect to X11 window server using :'0.0' as the value of the DISPLAY variable
, как только она пытается создать экземпляр класса Robot. Позже я узнал, что это потому, что GUI еще не загружен во время выполнения моей программы, поэтому я установил задержку в rc.local
. Это последние строки в rc.local
:
sleep 60s
sudo sh /home/pi/Desktop/launcher.sh &
exit 0
Хотя программа запускается после загрузки графического интерфейса, она по-прежнему выбрасывает это исключение. Я пробовал:
- Использование
.bashrc
вместо rc.local
- Установка задержки внутри моего
launcher.sh
скрипта перед вызовом моей настоящей программы
- Вызов другого сценария оболочки, который имел задержку в начале, а затем вызвал
launcher.sh
У меня не было успеха, я исчерпал все свои идеи и не знаю, где еще искать решение этой проблемы.