我正在嘗試創建.app包含 jdk、jar 和 shell 腳本的包,基本上我正在嘗試在里面運行 jar .app。
我里面的內容.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-s 就是這樣作業的。
uj5u.com熱心網友回復:
像這樣的相對路徑名../jdk/bin/java是相對于當前作業目錄的,而不是相對于腳本的位置。
當您的作業目錄不是父目錄時,您可以在終端中重現問題MacOS,例如父目錄,并且您以MacOS/AppName.
一個可能的解決方案可能是
#!/bin/zsh
SCRIPTDIR=$(dirname $0)
"$SCRIPTDIR"/../jdk/bin/java -jar "$SCRIPTDIR"/../app/myapp.jar
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/426451.html
