自动启动 GUI Java jar Lubuntu

Autostart GUI Java jar Lubuntu

大家好,我需要你们的帮助。我有一台没有显示器的 运行s Lubuntu 14.10 PC。用户自动登录。我创建了一个 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返回的字符串是否为空。 (因此没有找到进程 lxsession 的 PID)。一旦 lxsession 启动,循环就会被取消,脚本会继续执行我的 java 应用程序,该应用程序现在可以找到 X 服务器并正常运行。

谢谢大家的帮助。我希望其他人能得到这个帖子的帮助,而不是像我一样被折磨!