2015-10-26 5 views
0

Обратите внимание: Хотя я использую Grails Shiro plugin, я считаю, что это основная проблема Grails, не имеющая никакого отношения к плагину вообще.Grails 2.4 не будет читать файл конфигурации из/opt


Mac (Yosemtie) и Grails 2.4.5 здесь. Вот лучшие 2 линии от моего Config.groovy:

String configFileAbsPath = System.getProperty('configFileAbsPath') 
grails.config.locations = [ "file:${configFileAbsPath}" ] 

Так запустить локально я сделать что-то вроде:

grails -DconfigFileAbsPath=/Users/myuser/tmp/myapp.properties run-app 

Когда я запускаю этот точный вызов, мое приложение запускается и ведет себя просто отлично.

Однако в нелокальных средах я хочу, чтобы мой файл конфигурации находился под /opt/myapp/myapp.properties. Поэтому на моей локальной машине я создаю каталог /opt/myapp, а затем побежал chmod -R 777 /opt/myapp. Я затем скопировать myapp.properties к нему и запустить:

grails -DconfigFileAbsPath=/opt/myapp/myapp.properties run-app 

Это приводит к следующей трассировки стека:

| Error Error generating web.xml file (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.) 
groovy.lang.MissingPropertyException: No such property: shiro for class: java.lang.String 
    at ShiroGrailsPlugin$_closure4_closure30_closure34.doCall(ShiroGrailsPlugin.groovy:248) 
    at ShiroGrailsPlugin$_closure4_closure30_closure34.doCall(ShiroGrailsPlugin.groovy) 
    at ShiroGrailsPlugin$_closure4_closure30.doCall(ShiroGrailsPlugin.groovy:243) 
    at ShiroGrailsPlugin$_closure4_closure30.doCall(ShiroGrailsPlugin.groovy) 
    at ShiroGrailsPlugin$_closure4.doCall(ShiroGrailsPlugin.groovy:242) 

Я серьезно сомневаюсь, что расположение внешнего файла конфигурации, или права доступа к файлам устанавливается на config (или его родительский каталог) сломает плагин Grails Shiro. Я думаю, что это всего лишь вводящее в заблуждение исключение Grails/Groovy. Скорее всего, какое-то исключение безопасности заставляет кое-что не загружать/заполнять правильно (и терпеть неудачу тихо), а затем, когда Grails Shiro вступает во время run-app, его отсутствует что-то, что должно быть там, и вызывает смерть run-app.

Любые идеи относительно того, что происходит, или что такое исправление?


Update: Запуск grails clean, grails clean-all и/или grails refresh-dependencies до вызова grails run-app не помогают/решить эту ошибку либо.

+0

Как пользователь, вызывающий приложение grails run, может ли он копировать файл в этом месте? Мой вопрос касается chown not chmod. Попробуйте chown -r user: user to path из папки, содержащей конфигурацию. Я опубликовал альтернативу загрузки внешней конфигурации на другой аналогичный пост неделю назад – Vahid

ответ

1

Обычно я предпочитаю иметь файл .groovy для внешней конфигурации, а не .properties, потому что я могу писать printlns в него, чтобы проверить, загружен ли файл или нет.

Смежные вопросы