Groovlet + Tomcat: "incapaz de resolver classe" ao importar bibliotecas

votos
1

Eu estou tendo alguns problemas para executar um servlet Groovy (Groovlet) no tomcat que importa uma classe biblioteca. Quando eu não importar qualquer coisa que o Groovlet funciona corretamente, mas se eu importar algo que eu espero ser no classpath (eu posso importar a mesma classe com sucesso em um servlet regular), vejo o seguinte erro:

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.

O frasco contendo MyLibraryClassestá em shared/lib, que é carregado por tomcat pela seguinte em catalina.properties:

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

Meus Groovlets são mapeados conforme descrito no guia do usuário no meu aplicativo de 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>

E aqui está o código para o Groovlet, MyGroovlet.groovy:

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

Meu Groovlet é implantado WEB-INF/groovy/MyGroovlet.groovy, pelo API GroovyServlet .

Quando eu visito http://localhost:8080/myapplication/MyGroovlet.groovy, o erro descrito anteriormente é escrito para meus logs de aplicativos.

Existe alguma maneira que eu preciso para declarar explicitamente o classpath de tempo de execução para GroovyServlet? Eu tentei movendo o frasco biblioteca para vários lugares, incluindo WEB-INF/libe movendo o real MyLibraryClass.classarquivo para WEB-INF/classes, mas sem sorte.

Publicado 10/12/2008 em 00:00
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Estou usando Groovy plugin para o Eclipse. Exportando Groovlets em um arquivo de guerra que também funcionam.

Quando eu faço exportar meu aplicativo baseado em Groovlet, este plugin útil coloca arquivos .groovy no diretório / WEB-INF / classes (no classpath). E isso funciona quando eu implantar o arquivo de guerra na minha Tomcat Server.

Esperamos que isso ajude.

Saudações.

Respondeu 25/02/2009 em 02:50
fonte usuário

votos
0

Um erro estúpido que eu fiz foi que eu precisava para recarregar o webapp antes do jar I copiado em WEB-INF / lib seria carregado (ou seja, quer reiniciar servidor Tomcat inteira, ou recarregar apenas o aplicativo específico do gerente Tomcat). Dinamicamente editar os arquivos .groovy direito dentro do Tomcat / webapps / dir e ver as atualizações para as páginas imediatamente me iluda com a sensação de que tudo seria carregado automaticamente, mas não é assim com frascos. Era enlouquecedor até que eu percebi o que estava acontecendo.

Respondeu 30/04/2010 em 06:34
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more