Groovy Groovlet+;Tomcat:“是的。”;“无法解析类”;导入库时

Groovy Groovlet+;Tomcat:“是的。”;“无法解析类”;导入库时,groovy,groovlet,Groovy,Groovlet,我在tomcat中运行导入库类的GroovyServlet(groovlet)时遇到一些问题。当我没有导入任何东西时,groovlet可以正常工作,但是如果我确实导入了我希望在类路径上的东西(我可以在常规servlet中成功导入相同的类),我会看到以下错误: groovy.util.ScriptException: Could not parse scriptName: /MyGroovlet.groovy java.lang.RuntimeException: groovy.util.Scri

我在tomcat中运行导入库类的GroovyServlet(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
的jar位于
shared/lib
中,tomcat通过
catalina.properties中的以下内容加载该jar:

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被部署到
WEB-INF/groovy/MyGroovlet.groovy
,根据

当我访问
http://localhost:8080/myapplication/MyGroovlet.groovy
,前面描述的错误将写入我的应用程序日志


是否有某种方式需要显式声明GroovyServlet的运行时类路径?我尝试将库jar移动到几个地方,包括
WEB-INF/lib
和将实际的
MyLibraryClass.class
文件移动到
WEB-INF/classes
,但没有成功。

我正在使用Eclipse的Groovy插件。在war文件中导出Groovlet也可以

当我导出基于Groovlet的应用程序时,这个有用的插件将.groovy文件放在/WEB-INF/classes目录中(在类路径中)。当我在Tomcat服务器中部署war文件时,它就会工作

希望这有帮助


注意。

我犯了一个愚蠢的错误,我需要在加载复制到WEB-INF/lib中的jar之前重新加载webapp(即重新启动整个Tomcat服务器,或者从Tomcat管理器重新加载特定的应用)。动态编辑Tomcat/webapps/dir中的.groovy文件,并看到页面的更新,立即让我产生一种感觉,即所有内容都将自动加载,但JAR却不是这样。直到我意识到发生了什么,我才开始发疯

谢谢你的回答。然而,我不能100%肯定这能解决我的问题。如果您使用插件从Eclipse内部导出应用程序,您是说您能够导入和使用外部(可能是java)库?并不是我在导出和……部署时遇到问题,而是当我进行部署时,导入的文件会出错。请参阅问题中堆栈跟踪的“原因”部分。
import com.mycompany.mypackage.MyLibraryClass
MyLibraryClass.someStaticMethod()