У меня проблемы с запуском 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
, но безуспешно.