.jar
我正在尝试在 Linux 机器(Ubuntu 12.04 服务器)启动时运行一个文件
只要我在脚本所在的目录中运行它,它就可以正常工作。如果我尝试在目录外运行它,我会收到错误“无法访问 jarfile settasks.jar”。我想我的其他脚本也遇到了同样的问题。
这可能是脚本错误还是权限错误?我完全不知所措,到目前为止还没有找到任何可以解决问题的方法。欢迎任何帮助。
答案1
右键单击该文件并选择Copy。
现在,假设您正在使用这在包含以下文件的目录中:
java -jar ./settask.jar
输入命令的开头(java -jar
),然后粘贴 - ++ Ctrl-你应该得到类似这样的结果,其中指定了文件的完整路径:ShiftV
java -jar file:///home/wilf/settask/settask.jar
取出file://
并按下↵:
java -jar /home/wilf/settask/settask.jar
如果有效,那么相同的命令也应该可以在您的脚本中起作用。
我希望这个答案是可以的,我想你问的是 bash 脚本。
注意:
./
告诉它搜索当前所在目录的命令。
一开始就有,file://
就表示不行。
答案2
Unable to access jarfile
我尝试时遇到了启动 Spring Boot SysVinit 服务。
事实证明,目录和内容的/srv/myapp/
所有权有误。
运行sudo sh -c "chown -R myapp:myapp /srv/myapp/ && chmod -R u=rx,g=,o= /srv/myapp"
赋予所有相关文件和目录正确的所有权和权限。
答案3
我也遇到了同样的问题。在终端中启动它时出现错误
Unable to access unicentaopos.jar
解决方案比问题更简单。
给已知启动器加上这行Path=/usr/bin/unicenta/
,问题就解决了。
文件夹/unicenta
当然是程序所在的文件夹了。
这样启动器看起来就像这样:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Name=Unicenta
Comment=Fires up Unicenta oPOS
Type=Application
Path=/usr/bin/unicenta/
Exec=/usr/bin/unicenta/start.sh
Icon=/usr/bin/unicenta/unicentaopos.ico
要创建启动器,只需CTRL+ ALT+T打开终端。
类型cd Desktop
(如果是荷兰语则为 Bureaublad)(区分大小写)
输入nano unicenta.desktop
。复制并粘贴上述代码。
按CTRL+O保存。按CTRL+关闭X。输入chmod +x unicenta.desktop
。
准备好。
答案4
我不确定你的问题是否与我的相似,但我说我的问题和解决方案可能会对某些人有所帮助:当我想运行 shell 脚本来运行 Java 应用程序时出现了这个错误:
"Unable to access jar file"
我的问题发生的原因是我在 Windows 中创建了 shell 脚本文件,因此该文件以 Windows 行尾 (CR) 创建,而 shell 脚本应该以 Unix 行尾 (LF) 结尾,因此解决方案是在 Notepadd++ 中将行尾更改为 Unix,然后我保存了文件,重新运行后问题就解决了。