terça-feira, 29 de junho de 2010

Resolvido: Incompatibilidade entre bibliotecas ASM e Hibernate

No Netbeans 6.5.1 acabo de enfrentar um problema maluco de incompatibilidade entre a biblioteca nativa "Hibernate JPA" e um arquivo jar que se encontra imediatamente embutido nela: asm.jar.


Repentinamente meu programa começou a apresentar um erro dizendo:
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(I)V
E o seguinte StackTrace foi apresentado:

Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
        at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)
        at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)
        at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)
        at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
        at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
        at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
        at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:117)
        at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)
        at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:135)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
        at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
        at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:295)
        at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
        at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
        at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
        at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
        at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
        at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:753)
        at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:691)
        at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1390)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1359)
        ... 33 more

Solução:

O que deve ser feito é excluir manualmente os arquivos asm.jar e asm-atts.jar do classpath da biblioteca em questão e acrescentar as versões atualizadas dos mesmos. Podem ser baixadas aqui. O site do desenvolvedor pode ser acessado diretamente em: http://asm.ow2.org/download/index.html.

Esse problema começou a ocorrer sem mais nem menos, sendo que em uma bela manhã ensolarada eu executei o programa normalmente e 2 minutos depois, sem a alteração de uma linha de código, o erro começou a acontecer e me deixou maluco.
Espero que sirva para alguma pobre alma que passe por isso.  ;]

quarta-feira, 2 de junho de 2010

Netbeans 6.5 no Windows 7

 
Por algumas particularidades em um projeto, ainda preciso ficar preso na versão 6.5.1 do Netbeans.

Hoje ao tentar realizar a instalação dessa versão em uma máquina com o Windows 7, era apresentado o erro: "No JVM found", mesmo ao apontar o correto diretório do meu JDK.

Após algumas pesquisas, encontrei neste fórum o mesmo problema:
http://forums.sun.com/thread.jspa?threadID=5392644

Para funcionar, é necessário efetuar a descompactação "manualmente".

Copie o executável para, por exemplo, a raiz da unidade do sistema (c:) e execute os comandos pelo prompt:

netbeans-6.5.1-windows.exe --extract
java -jar bundle.jar

Um detalhe importante: Se o prompt não for executado como "Administrador" (clique direito > executar como..) você não terá acesso às pastas do sistema para concluir a instalação, e deverá instalá-lo em outro lugar.

Enjoy  ;]
BuscaPé, líder em comparação de preços na América Latina
 
BlogBlogs.Com.Br