宝贝一路向前 2024-02-24 22:07 采纳率: 0%
浏览 50

ubuntu22.04设置了autostart无效

设置了开启自动登陆,也实现了不需要输入密码登陆桌面。

但需要在登陆后启动一桌面应用程序,就是 java 的swing应用程序 。

使用ubuntu自带的 autostart。新增后在 用户主目录 下 .config/autostart中有 run.sh.desktop 文件,该文件执行一个脚本,也指定了全路径。该 sh如下

run.sh文件名

#!/bin/bash

echo "test" > test.log

java -jar test.jar

该 sh 也设置了 chmod +x run.sh 执行权限,java环境也正常,直接执行 run.sh也是正常的。

但reboot后,没有启动java程序,连日志也没有,应该是这个脚本没有执行。

  • 写回答

1条回答 默认 最新

  • GISer Liu 2024-02-24 22:08
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    这个问题可能是由于自动启动项的执行环境不够完整导致的。为了解决这个问题,你可以尝试以下步骤:

    1. 指定完整的 Java 路径 : 确保在你的 run.sh 脚本中使用完整的 Java 路径。你可以使用 which java 命令来获取 Java 的完整路径,然后将其用于 java -jar 命令。例如:
      bashCopy code
      #!/bin/bash
      echo "test" > test.log
      /usr/bin/java -jar test.jar
      
    2. 增加延迟 : 有时启动项可能在系统完全启动之前就执行了,导致某些依赖项不可用。你可以在启动脚本中增加一些延迟,确保系统完全启动后再执行你的 Java 程序。例如:
      bashCopy code
      #!/bin/bash
      echo "test" > test.log
      sleep 30  # 在这里增加了 30 秒的延迟
      /usr/bin/java -jar test.jar
      
    3. 检查日志 : 确保你的 Java 应用程序有写入日志的权限,并且你可以从日志中获取任何潜在的错误信息。你可以在启动脚本中使用绝对路径来指定日志文件的位置,以确保它可以正确写入。例如:
      bashCopy code
      #!/bin/bash
      echo "test" > /path/to/test.log
      /usr/bin/java -jar test.jar >> /path/to/test.log 2>&1
      
    4. 检查环境变量 : 在自动启动环境中,可能缺少某些环境变量或路径设置。你可以在启动脚本中添加必要的环境变量设置,以确保你的 Java 应用程序可以正常执行。例如:
      bashCopy code
      #!/bin/bash
      export PATH=$PATH:/usr/local/bin  # 你可能需要设置其他的环境变量
      echo "test" > test.log
      /usr/bin/java -jar test.jar
      
      通过以上步骤,你应该能够解决你的问题。记得在每一步之后重新启动系统并检查是否有任何改善。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    评论

报告相同问题?

问题事件

  • 创建了问题 2月24日