![使用 Java 的程序在 root 上可以正常运行,但用户使用时会出现错误](https://linux22.com/image/1178786/%E4%BD%BF%E7%94%A8%20Java%20%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%9C%A8%20root%20%E4%B8%8A%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%B8%B8%E8%BF%90%E8%A1%8C%EF%BC%8C%E4%BD%86%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E6%97%B6%E4%BC%9A%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF.png)
我有一个加载 jar 文件的 shell 脚本。使用 sudo 执行时,它会加载。但是,当不使用 sudo 时,我会收到错误,并且它不会加载。
Shell 脚本:
#!/bin/bash
jversion=$(java -version 2>&1 | grep -i version)
if [ -z "$jversion" ]; then
echo "This software is built using Java technology,"
echo "so please take a moment to install Java to be able to use the software on your computer."
echo ""
exit 1
fi
jv=$(java -version 2>&1 | grep -i version | cut -d'"' -f2 | cut -d'.' -f1-2)
if [ $jv == "1.6" ] || [ $jv == "1.7" ]; then
echo "Your version of Java is not supported."
echo "Please update your Java to version 1.8 to be able to use the software on your computer."
exit 1
fi
java -Duser.dir=/opt/link-assistantcom/ranktracker/resources/ \
-Xms64m \
-Xmx768m \
-Xss1024k \
-XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot \
-Djava.net.preferIPv4Stack=true \
-jar /opt/link-assistantcom/ranktracker/bin/ranktracker.jar
我必须删掉错误代码才能发布。任何帮助我都会很感激。
答案1
看来您尝试运行的 jar 文件位于 下/opt/
。
/opt/
由 root 所有...因此需要sudo
。
为了解决这个问题,请将 jar 文件放在您当前用户拥有的主目录中,然后相应地在脚本中更改其路径,这样它就无需加载sudo
。