Выполнение 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 префикс абсолютного пути всегда "/". Относительные пути не имеют префикса. Абстрактный путь, обозначающий корневой каталог, имеет префикс "/" и пустую последовательность имен.