Я поддерживаю приложение Grails, которое я не написал (на самом деле у меня нет опыта работы с Groovy / Grails :)), и в настоящее время оно содержит ошибку в одной из сред, в которой оно развернуто, но не в других.
Чтобы отладить это, я хочу перейти в оболочку grails на уязвимом сервере, запустить команду, которая, как я подозреваю, подвержена ошибкам, и посмотреть, какие результаты я получу, чтобы увидеть, куда перейти к следующей отладке.
Приложение помещается в файл war с помощью команды grails prod war
, scp'd на сервер для развертывания и извлекается с помощью jar -xvf /path/to/war
.
Когда я нахожусь в оболочке Grails, я не могу получить доступ ни к одному из классов, определенных в домене.
Вот что я пытаюсь:
`
]$ ~/grails-1.0.4/bin/grails shell
Welcome to Grails 1.0.4 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /home/me/grails-1.0.4
Base Directory: /var/home/me/skills_test/WEB-INF
Running script /home/me/grails-1.0.4/scripts/Shell.groovy
Environment set to development
[copy] Copying 1 file to /home/me/.grails/1.0.4/projects/WEB-INF
[copy] Copying 1 file to /home/me/.grails/1.0.4/projects/WEB-INF
Jun 11, 2009 2:35:19 PM java.util.prefs.FileSystemPreferences$7 run
WARNING: Prefs file removed in background /home/me/.java/.userPrefs/org/codehaus /groovy/tools/shell/prefs.xml
Groovy Shell (1.5.6, JVM: 10.0-b22)
Type 'help' or '\h' for help.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
groovy:000> new User()
ERROR org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, groovysh_evaluate: 2: unable to resolve class User
@ line 2, column 1.
1 error
at Shell_groovy$_run_closure2.doCall (Shell_groovy:71)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:94)
at Shell_groovy$_run_closure2.doCall (Shell_groovy)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:94)
at Shell_groovy$_run_closure1.doCall (Shell_groovy:37)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:94)
at Shell_groovy$_run_closure1.doCall (Shell_groovy)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at gant.Gant.dispatch (Gant.groovy:271)
at gant.Gant.this$2$dispatch (Gant.groovy)
at gant.Gant.invokeMethod (Gant.groovy)
at gant.Gant.processTargets (Gant.groovy:436)
at gant.Gant.processArgs (Gant.groovy:372)
groovy:000> import User
ERROR org.codehaus.groovy.tools.shell.CommandException: Invalid import definition: 'import User'; reason: startup failed, script1244745379552.groovy: 1: unable to resolve class User
@ line 1, column 1.
1 error
at Shell_groovy$_run_closure2.doCall (Shell_groovy:71)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:94)
at Shell_groovy$_run_closure2.doCall (Shell_groovy)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:94)
at Shell_groovy$_run_closure1.doCall (Shell_groovy:37)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:94)
at Shell_groovy$_run_closure1.doCall (Shell_groovy)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:79)
at gant.Gant.dispatch (Gant.groovy:271)
at gant.Gant.this$2$dispatch (Gant.groovy)
at gant.Gant.invokeMethod (Gant.groovy)
at gant.Gant.processTargets (Gant.groovy:436)
at gant.Gant.processArgs (Gant.groovy:372)
groovy:000>
`
Как вы можете видеть, я не могу получить доступ к классу "Пользователь" (который находится в доменном каталоге - это Grails 'эквивалент' моделей ', верно?) И не могу импортировать его тоже.
Все примеры использования оболочки grails, которые я видел, все могли получить доступ ко всем классам в приложении без проблем с импортом ... что я сделал не так?
Это потому, что я запускаю оболочку grails для извлеченного файла WAR? Как я могу обойти это?