LMDE 2 Betsy开机自启Java Jar文件失败求助
让我们一步步来解决你的问题——先搞清楚脚本没启动的原因,再搞定全屏运行的需求:
第一步:先排查脚本本身的执行问题
首先,手动运行脚本验证是否能正常启动Jar,这能快速排除脚本语法、路径或权限问题:
sudo /etc/init.d/blabla.sh start
如果运行时报错,把错误信息记下来——这是最直接的排查线索。
另外,sysvinit脚本的日志会写入/var/log/syslog,你可以用下面的命令筛选相关日志:
grep blabla /var/log/syslog
看看有没有类似“找不到java路径”“Jar文件不存在”或权限不足的报错。
第二步:解决图形环境依赖的核心问题
你的Jar需要全屏运行,这意味着它必须依赖Xorg图形服务器,但/etc/init.d下的脚本是系统级启动脚本——它会在用户登录、图形环境完全加载前就执行,此时没有可用的图形会话,Jar自然无法启动界面。
针对这个问题,有两个靠谱的解决方案:
方案A:让脚本在用户登录后(图形会话启动后)运行
这是更贴合全屏程序场景的方式,因为全屏程序本质属于用户会话的一部分:
- 打开用户目录下的自动启动文件夹,没有的话就创建:
mkdir -p ~/.config/autostart - 在里面创建
blabla.desktop文件,内容如下:[Desktop Entry] Type=Application Name=Blabla Jar Exec=sh -c "cd /home/myUser/Dokumente/blablaFolder && java -jar blablaJar.jar" Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true - 保存后重启系统,登录后Jar就会自动启动了。
方案B:修改init.d脚本,等待图形环境并指定会话变量
如果你一定要用系统级init脚本(比如需要无人登录时也运行,但全屏程序一般不需要这个场景),需要修改脚本让它等待X启动,并指定正确的图形环境变量:
- 先确认用户的XAUTHORITY路径,一般是
/home/myUser/.Xauthority - 修改
/etc/init.d/blabla.sh的启动部分:
注意:这种方式依赖# 等待Xorg启动(最多等30秒,可根据实际调整) for i in {1..30}; do if pgrep Xorg > /dev/null; then break fi sleep 1 done # 指定图形环境变量 export DISPLAY=:0 export XAUTHORITY=/home/myUser/.Xauthority cd /home/myUser/Dokumente/blablaFolder/ java -jar blablaJar.jarmyUser的X会话,如果多用户登录或用户未登录,Jar仍可能无法运行。
第三步:确保Jar能全屏运行
如果Jar本身支持全屏参数,你可以在启动命令里添加对应参数(比如部分Java Swing程序支持-Dfullscreen=true,具体要看Jar的文档)。
如果Jar没有自带全屏功能,可以用wmctrl工具强制窗口全屏:
- 先安装wmctrl:
sudo apt-get install wmctrl - 修改启动命令,先启动Jar再强制全屏:
cd /home/myUser/Dokumente/blablaFolder/ java -jar blablaJar.jar & # 等待窗口启动(根据Jar启动速度调整等待时间) sleep 2 # 替换成你的Jar程序的窗口标题,强制全屏 wmctrl -r "Blabla Window Title" -b add,fullscreen
最后检查权限
确保myUser对/home/myUser/Dokumente/blablaFolder/和blablaJar.jar有读写执行权限,避免因权限不足导致无法运行。
内容的提问来源于stack exchange,提问作者Alex Marent
相关产品推荐
相关产品推荐

