自动启动GUI Java jar Lubuntu



嗨,伙计们,我需要你们的帮助。我有一台运行Lubuntu 14.10的电脑,没有显示器。用户被自动登录。我创建了一个Sysvinit脚本并将其安装在/etc/init.d上。我的脚本启动了一个jar文件,打开了一个在串行端口上侦听的GUI应用程序。

问题是,我无法使jar应用程序在启动时自动启动。Java抱怨它无法连接到X11显示服务器。然而,这是一件奇怪的事情。如果我ssh到机器中,并使用sudo服务自己运行脚本,它就会正常启动。此外,如果我在引导过程中连接了监视器,它也会自动正确启动。

我需要在没有连接监视器的情况下启动脚本。似乎当监视器未连接时,Xorg服务器就不会启动。有人有什么建议吗?

感谢

您可能需要像xvfb这样的Xorg模拟器。

我还没有在Lubuntu上测试过以下内容,但它应该可以工作:

sudo apt-get install xvfb
sudo Xvfb :10 -ac
export DISPLAY=:10

这应该允许您的应用程序通过xvfb运行,而不需要任何类型的监视器或显示器。

经过大量的故障排除,我终于实现了我想要的。毕竟问题是X服务器没有足够的时间加载。Xserver是从一个新兴的服务lightdm启动的,我的脚本是从init.d.启动的

看起来,如果连接了监视器,X服务器会更早启动,并且我在init.d中的脚本不会崩溃。

一个简单的sleep 10命令可以暂停脚本的执行,直到X服务器启动。不过,这只是对X服务器启动时间的猜测。因此,一个更优雅的解决方案是检查桌面何时启动,然后启动我的应用程序。为了实现这一点,我在启动脚本之前插入了以下几行。

while [ -z $(pidof lxsession) ]; do
  echo "LXSession not started yet, waiting for 2 secs"
  sleep 2
done

使用-z $(pidof lxsession),我检查返回的pidof字符串是否为null。(因此,找不到进程lxsession的PID)。lxsession一启动,循环就被取消,脚本就转到我的java应用程序的执行,该应用程序现在找到X服务器并正常运行。

谢谢大家的帮助。我希望其他人能得到这条线索的帮助,而不是像我一样受到折磨!

最新更新