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

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

conseguiu resolver?

estou com o mesmo problema…

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

oh cara valeuzão.

que vacilo né, uma coisa simples rs

Abraços.

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

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

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

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

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)

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

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.

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

Abraço

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