OS X запуск jar в качестве элемента запуска не будет считывать файл конфигурации

#jar #osx-snow-leopard

#jar #osx-snow-leopard

Вопрос:

Я пытаюсь запустить команду

 java -jar ccu-historian.jar 
  

в качестве элемента запуска

Когда я запускаю команду в командной строке, все работает

Когда я пытаюсь запустить его как LaunchAgent через

 <?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>com.bob.ccuhistorian</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-jar</string>
<string>/Users/user/Applications/ccuhistorian/ccu-historian.jar</string>
</array>
</dict>
</plist>
  

Я получаю сообщение об ошибке, что он не может быть запущен

 13.11.11 15:15:34   com.bob[1445]   15:15:34|SEVERE |Exception: Can't access configuration file ccu-historian.config
  

файл находится в той же папке, и я попытался изменить через chmod 777 — никаких изменений, и его можно прочитать при вызове из командной строки — что я делаю не так?

Ответ №1:

Я нашел рабочее решение:

написание bash-скрипта

 #!/bin/bash
cd /Users/user/Applications/ccuhistorian/
/usr/bin/java -jar ccu-historian.jar
  

и вызов

 /path/to/script.sh
  

работает как единственный параметр XML, но не должно ли быть более элегантного решения?

Ответ №2:

Это может быть чрезмерное обновление. Но вы могли бы прочитать текущий путь к файлу Jar и построить путь к файлу конфигурации из этого. Проблема в том, что вы, вероятно, получаете к нему доступ по относительному пути, но «java -jar / path /to / your / file» ищет его в ложном каталоге.