【发布时间】:2015-02-15 15:26:50
【问题描述】:
我正在尝试使用 MacOS“调度程序”launchd 执行一些 Java 代码。
我的 plist 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.nathangrigg.archive-tweets</string>
<key>ProgramArguments</key>
<array>
<string>/Users/ie54553/Desktop/MyProject/script.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/out.out</string>
<key>StandardErrorPath</key>
<string>/tmp/err.out</string>
</dict>
</plist>
脚本.sh:
/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/bin/java -jar /Users/ie54553/Desktop/MyProj/classes/artifacts/jarFile_jar/Application.jar
问题是,我在程序中的所有相对路径(资源路径、属性、日志位置、spring bean 文件等)都失败了。
plist 文件位于根文件夹下,因此我假设所有路径都是相对于执行器位置的。
【问题讨论】:
-
路径是相对于当前目录的。您可以在脚本中使用 cd 命令更改当前目录。
-
script.sh 位于项目目录中。问题是 plist 文件(launchd 配置)位于 /Library/LaunchDaemons .. 下,他是启动流程的人。
-
@lgal 当前目录不依赖于您正在运行的脚本所在的位置。您只需将
cd放入任何目录,使其成为当前目录,然后在任何其他目录中运行任何脚本,该脚本将在当前目录中运行。 -
你说的“他们都失败了”是什么意思?
标签: java relative-path launchd