Groovlet + Tomcat: «невозможно определить класс» при импорте библиотек - PullRequest
2 голосов
/ 10 декабря 2008

У меня проблемы с запуском Groovy-сервлета (groovlet) в Tomcat, который импортирует класс библиотеки. Когда я ничего не импортирую, Groovlet работает правильно, но если я импортирую что-то, что я ожидаю, в пути к классам (я могу успешно импортировать тот же класс в обычном сервлете), я вижу следующую ошибку:

groovy.util.ScriptException: Could not parse scriptName: /MyGroovlet.groovy
java.lang.RuntimeException: groovy.util.ScriptException: Could not parse scriptName: /MyGroovlet.groovy
    at groovy.servlet.GroovyServlet$1.call(GroovyServlet.java:123)
...
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, /MyGroovlet.groovy: 1: unable to resolve class com.mycompany.mypackage.MyLibraryClass
 @ line 1, column 1.

Банка, содержащая MyLibraryClass, находится в shared/lib, который загружается tomcat в catalina.properties следующим образом:

shared.loader=...,${catalina.base}/shared/lib/*.jar,...

Мои groovlets отображаются, как описано в руководстве пользователя в моем приложении web.xml:

<servlet>
    <servlet-name>GroovyServlet</servlet-name>
    <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>GroovyServlet</servlet-name>
    <url-pattern>*.groovy</url-pattern>
</servlet-mapping>

А вот код для Groovlet, MyGroovlet.groovy:

import com.mycompany.mypackage.MyLibraryClass
MyLibraryClass.someStaticMethod()

Мой groovlet развернут в WEB-INF/groovy/MyGroovlet.groovy, в соответствии с GroovyServlet API .

Когда я посещаю http://localhost:8080/myapplication/MyGroovlet.groovy, описанная выше ошибка записывается в журналы моего приложения.

Есть ли какой-то способ, которым мне нужно явно объявить путь к классу времени выполнения для GroovyServlet? Я пытался переместить банку библиотеки в несколько мест, включая WEB-INF/lib и перемещение самого файла MyLibraryClass.class в WEB-INF/classes, но безуспешно.

Ответы [ 2 ]

1 голос
/ 25 февраля 2009

Я использую плагин Groovy для Eclipse. Экспорт Groovlets в военный файл также работает.

При экспорте моего приложения на основе Groovlet этот полезный плагин помещает файлы .groovy в каталог / WEB-INF / classes (в classpath). И это работает, когда я развертываю файл war на моем сервере Tomcat.

Надеюсь, что это поможет.

Привет.

0 голосов
/ 30 апреля 2010

Глупая ошибка, которую я сделал, заключалась в том, что мне нужно было перезагрузить веб-приложение перед загрузкой jar-файла, скопированного в WEB-INF / lib (то есть либо перезапустить весь сервер Tomcat, либо перезагрузить только определенное приложение из менеджера Tomcat). Динамическое редактирование файлов .groovy прямо в Tomcat / webapps / dir и просмотр обновлений на страницах сразу привели меня в чувство, что все будет загружено автоматически, но с флягами это не так. Это было безумно, пока я не понял, что происходит.

...