我正在尝试创建包含jdk、jar和shell脚本的.app
包,基本上我正在尝试在.app
中运行jar。
我在.app
中的内容如下(应用程序与unix可执行文件同名(:
.
├── MacOS
│ └── AppName
├── app
│ └── myapp.jar
└── jdk
AppName,如果我们给它.sh
扩展名并查看它,它看起来像这个
#!/bin/zsh
../jdk/bin/java -jar ../app/myapp.jar
如果我用./AppName
从终端运行这个文件可执行文件,它可以毫无问题地工作。但如果我只是双击它,它不工作说no such file or directory: ../jdk/bin/java
。
我认为它应该使用双击才能使用.app
,因为其他.app
都是这样工作的。
像../jdk/bin/java
这样的相对路径名是相对于当前工作目录的,而不是相对于脚本的位置。
当您的工作目录不是MacOS
,而是父目录,并且您以MacOS/AppName
启动应用程序时,您可以在终端中重现问题。
一个可能的解决方案可能是
#!/bin/zsh
SCRIPTDIR=$(dirname $0)
"$SCRIPTDIR"/../jdk/bin/java -jar "$SCRIPTDIR"/../app/myapp.jar