【发布时间】:2012-08-10 03:47:19
【问题描述】:
尝试通过双击在 Mac 上运行以下 test.command 脚本。 (要求:必须通过双击运行)
#!/bin/sh
sudo java -jar ExecutableJar.jar
这是输出。 (终端保持打开并显示以下消息)
Last login: Mon Aug 13 15:59:05 on ttys001
/Applications/Application\ Folder/test.command ; exit;
code-mac:~ code$ /Applications/Application\ Folder/test.command ; exit;
Unable to access jarfile ExecutableJar.jar
logout
[Process completed]
当我从终端运行相同的命令时...
sudo java -jar ExecutableJar.jar
...它工作正常并按预期打开可执行 jar(在提示我输入密码后)。有任何想法吗?另外,如果可能的话,我希望脚本要么根本不打开终端,要么至少在启动可执行 jar 后关闭终端。
谢谢!
【问题讨论】:
-
也许您需要指定
ExecutableJar.jar的完整路径。它可能不在运行双击脚本的默认目录中(可能是您的主目录)。手动运行它,你可能事先做了一个cd什么的…… -
因为它是一个安装到用户选择位置的程序,所以该位置不能被硬编码。该脚本与可执行 jar 位于同一目录中,我将如何更改脚本以切换到当前目录?也许是“cd .”?
-
在这种情况下,您可能需要一个安装程序脚本来自定义
test.command脚本以适应用户选择的安装位置。 -
安装程序和我必须满足的要求是不可能的。我很犹豫是否相信脚本无法确定它自己的位置并设置 jar 可执行文件本身的位置......
-
您的系统上是否有
dirname?我对 Mac/OSX 环境不是很熟悉。在这种情况下,d=$(dirname $0)在您的test.command顶部并将java调用更改为java -jar ${d}/ExecutableJar.jar应该可以工作。如果您没有dirname,将无法工作,但...