我在导入库类的 tomcat 中运行 groovy servlet (groovlet) 时遇到了一些麻烦。当我不导入任何东西时,groovlet 可以正常工作,但是如果我确实导入了我希望在类路径上的东西(我可以在常规 servlet 中成功导入同一个类),我会看到以下错误:
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
包含is in的 jarshared/lib
由 tomcat 通过以下 in 加载catalina.properties
:
shared.loader=...,${catalina.base}/shared/lib/*.jar,...
我的 groovlet 是按照我的应用程序的用户指南中的描述进行映射的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()
WEB-INF/groovy/MyGroovlet.groovy
根据GroovyServlet API ,我的 groovlet 被部署到。
当我访问 时http://localhost:8080/myapplication/MyGroovlet.groovy
,前面描述的错误会写入我的应用程序日志。
有什么方法需要我显式声明 GroovyServlet 的运行时类路径?我尝试将库 jar 移动到几个地方,包括WEB-INF/lib
并将实际MyLibraryClass.class
文件移动到WEB-INF/classes
,但没有运气。