从脚本执行具有相对路径的jar

时间:2015-02-15 15:26:51

标签: java relative-path launchd

我正在尝试使用MacOS“scheduler”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>

script.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文件位于根文件夹下,因此我假设所有路径都相对于执行程序位置。

1 个答案:

答案 0 :(得分:0)

如果路径以&#39; /&#39;开头。那么它被认为是一条绝对的道路,并被视为如此。有没有&#39; tmp&#39;目录下&#39; /&#39; (并具有写访问权限)?如果没有,请尝试&#39; tmp&#39;而不是&#39; / tmp&#39;。

来自docs

  

对于UNIX平台,绝对路径名的前缀始终为&#34; /&#34;。相对路径名没有前缀。表示根目录的抽象路径名具有前缀&#34; /&#34;和一个空名称序列。