Tomcat 7 + JSF +JasperReports - Illegal class name "groovy/jmx/builder/package-info"

12 respostas
T

Gente,

Estou passando o carnaval trabalhando… e obcecado com um problema na minha aplicação. Já procurei sobre o assunto, no google e aqui no GUJ mesmo, como não obtive sucesso, resolvi criar o tópico.

Recentemente iniciei a construção de relatórios da minha aplicação, após uma boa pesquisa na escolha da plataforma de geração de relatórios, optei pelo uso do IReports e JasperReports 4.0.1.
Ótimo, adorei o IReports, efetuei uma série de relatórios de testes e visualização como java application e todos funcionaram muito bem, porém no momento que eu criei o Servlet e fui testá-lo na minha aplicação, começou a aparecer alguns erros ao levantar o Tomcat 7.
Segue abaixo o log de um dos erros:

AVISO: Unable to load class [groovy.jmx.builder.package-info] to check against the @HandlesTypes annotation of one or more ServletContentInitializers.

java.lang.ClassFormatError: Illegal class name groovy/jmx/builder/package-info in class file groovy/jmx/builder/package-info

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClassCond(Unknown Source)

at java.lang.ClassLoader.defineClass(Unknown Source)

at java.security.SecureClassLoader.defineClass(Unknown Source)

at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)

at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1148)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)

at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:1947)

at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1910)

at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1797)

at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1756)

at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1742)

at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1245)

at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:874)

at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:317)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4974)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1035)

at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1035)

at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:724)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

at org.apache.catalina.startup.Catalina.start(Catalina.java:620)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:304)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)

Anteriormente, ainda estava dando também estouro do Permgen. Esse estouro não deixava o Tomcat levantar. Eu consegui resolver esse problema tirando alguns dos jars de dependência do JasperReports.
Mesmo com o erro acima, o Tomcat 7 levanta e minha aplicação funciona normalmente, inclusive os relatórios.
Gostaria de saber se alguém sabe o que está acontecendo e porque esse erro ocorre mesmo sem impedir o funcionamento da minha app.

Desde já muito obrigado e ótimo carnaval a todos,

Titvs

12 Respostas

andreharry

conseguiu resolver?

estou com o mesmo problema…

T

Olá AndreHarry,

Consegui resolver sim! É relativamente simples, mas demorei para achar a solução, pois apesar de ser um problema simples, eu não vi isso em nenhum post nem ninguém respondeu o meu. rsrsrsrs
Mas vamos lá…
Por padrão os relatórios do iReports 4.0 vem com a linguagem setada para Groove. O Groove é um lib extremamente pesada que consome muito dos recursos do seu servidor causando o erro PermGem entre outras coisas. Isso pode ser corrigido liberando mais memória para o Heap, mas é muito trabalho para pouco resultado.
Eu resolvi isso tirando os jars do Groove do lib da minha aplicação. Depois eu fui ao iReperts e mudei a propriedade Language do meu relatório de Groove para Java. Isso funcionou muito bem.
Só não esquece de Salvar e Compilar seu relatório no iReports depois dessa mudança. Também não esquece de atualizar a pasta do relatório no Eclipse antes de compilar sua aplicação.
Faz o teste e se funcionar você me dá um alô…

Abraços,

Titvs

andreharry

oh cara valeuzão.

que vacilo né, uma coisa simples rs

Abraços.

T

Simples realmente é,

Porém se torna complicado quando não tem nada na documentação do iReports, nem nos livros, manuais e totoriais que eu lí.
Apesar de ter uma solução simples eu gastei muito tempo para descobrir isso. Mexi em configuração de memória, analisei DUMP, perdi um tempão e me aborreci bastante.
Mas o bom é que está funcionando nas minhas aplicações e que agora a sua também. A partir de agora, qualquer um que tenha o mesmo problema, já vai ter um post para ler.
Só fica esperto com o Spring. Eu observei que quando colocamos as libs do Spring nas aplicações JSF 2.0, ocorre PermGem.

Abraços e boa sorte,

Titvs

joaopaulotds

Eu estava enfrentando esse mesmo erro, fiz as alterações como recomendado e funcionou perfeitamente! :smiley: Agradeço pela solução!

Kardok

Excelente , Mesmo erro , uma soluçao Facil, mas só achei este link , Grato :wink:

ale0790

alguem poderia me dizer quais libs retirar? estou com o mesmo problema :confused:

Kardok

Como o Colega disse Acima

Por padrão os relatórios do iReports 4.0 vem com a linguagem setada para Groove. O Groove é um lib extremamente pesada que consome muito dos recursos do seu servidor causando o erro PermGem entre outras coisas. Isso pode ser corrigido liberando mais memória para o Heap, mas é muito trabalho para pouco resultado.
Eu resolvi isso tirando os jars do Groove do lib da minha aplicação. Depois eu fui ao iReports e mudei a propriedade Language do meu relatório de Groove para Java

A lib é groovy-all-1.7.5.jar ou similar (Ireport 4)

ale0790

Hmm, amigo fiz isso, e continuou sem iniciar o tomcat, como o nosso amigo ali havia dito pra tomar cuidado com o jar do spring tbem, retirei ele, tbem nao funcionou, entao retirei todos os jar referentes ao ireport, e funcionou :smiley:
ou seja algo relacionado com eles, alguem de voces poderia me passar a lista de jar que voces estão utilizando, pois lembro que quando tentei configurar o ireport perdi dias, pra fazer funcionar, porem agora me aconteçe esse problema ai
ahwuehwauhewu

vlw pela atenção!

Abraço

Kardok

Essas sao todas as LIBS que eu Uso.

OJDBC - banco
2 do JSF
PRIMEFACES - Framework
E ultilizo ChartCustomizer - Que é uma lib custom de grafico

O RESTO Todas são do Ireports.

Espero que isso ajude.

ale0790

Cara, muito obrigado, mto obrigado mesmo :), irei testar, em breve posto o resultado

Abraço

ale0790

Cara, olha que estranho adiciono essas lib, e funciona beleza, no glassfish, já no tomcat ele nem inicia quando do deploy na aplicação. se retiro elas e do deploy dnovo, funciona. alguém sabe o que pode ser ??

Kardok, sua aplicação já esta hospedada em algum lugar?? o que me diz da performace dela ?? a minha localmente está mto rapido, coloquei em um vps nos eua com o servidor glassfish e ela esta bem lerda, :S

Valeu

Criado 6 de março de 2011
Ultima resposta 28 de out. de 2011
Respostas 12
Participantes 5