Выполнение jar с относительным путем из скрипта

Я пытаюсь выполнить код Java с помощью "планировщика" MacOS launchd,

Мой файл 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 ответ

Если путь начинается с '/', то он считается абсолютным и рассматривается как таковой. Есть ли каталог 'tmp' в папке '/' (и с правами записи)? Если нет, то попробуйте "tmp", а не "/ tmp".

Из документов:

Для платформ UNIX префикс абсолютного пути всегда "/". Относительные пути не имеют префикса. Абстрактный путь, обозначающий корневой каталог, имеет префикс "/" и пустую последовательность имен.

Другие вопросы по тегам