我是Linux/Unix的新手,我在让shell脚本运行可执行的jar文件时遇到了麻烦。这是我的shell脚本www.example.com的内容start.sh:
java -Xmx4096 -Xms4096 -jar "/home/user/Documents/Mserver/fserver.jar"
我得到的错误是
Error: Unable to access jarfile /home/user/Documents/Mserver/fserver.jar
我所尝试的:
我试着运行命令
chmod u+x /home/user/Documents/Mserver/start.sh
chmod u+x /home/user/Documents/Mserver/fserver.jar
chmod -R 777 /home/user/Documents/Mserver
授予给予我的所有文件读、写和执行权限
此外,我最初只是在shell脚本中使用jar文件的名称,而不是它所在的整个路径。在被告知添加路径可能会解决问题后,我添加了它,但没有任何变化。
当我在网站上看到另一个类似的问题时,我看到有人在使用pearl脚本时遇到了同样的问题,这是因为配置文件的问题,但我不知道这是否与我有关。
我是一个新手,我不知道下一步该做什么,所以如果你注意到我这样做有什么问题,有任何建议,或者认为我遗漏了任何重要的细节,请告诉我。
编辑:运行命令时
ls -l /home/user/Documents/Mserver/fserver.jar
我得到的结果是:
-rwxrwxrwx 1 user user 4883911 Dec 12 17:15 /home/user/Documents/Mserver/fserver.jar
当我将文件更改为
path="$HOME/Documents/Mserver/fserver.jar"
java -Xmx4096 -Xms4096 -jar $path
我仍然得到错误:
Error: Unable to access jarfile /home/user/Documents/Mserver/fserver.jar
另外,我忘记注意的另一件事是,当我导航到jar文件所在的目录并运行命令时,
java -Xmx4096 -Xms4096 -jar fserver.jar
有时灵
3条答案
按热度按时间ulmd4ohb1#
在shell脚本中添加以下行:
6tqwzwtp2#
尝试使用脚本中使用的绝对路径启动文件,但使用您知道的其他方法。(因此,导航到您的目录并运行您知道有效的命令:
而是使用脚本中使用的绝对路径。在这种情况下:
)如果这不起作用,那么参考很可能是坏的。
g6ll5ycj3#
在我的情况下,原因“错误:无法访问jarfile”,当从.sh脚本启动Java应用程序时,是Windows换行符
\r
(或CR)。它似乎是作为jarfile参数的一部分传递给Java解释器的,而jar文件在文件系统中找不到,因为它的名称不匹配。要调试此行为,请将
cd
(更改目录)命令添加到脚本中,运行它并观察输出,例如:将给予如下的错误文本(注意/opt/app末尾的
\r
):我正在使用Rocky 8 Linux,但这也适用于其他发行版。