1
resposta

Erro ao percorrer uma List com o comando forEach

Boa noite, estou com um problema em uma parte de um código meu, onde tenho uma função que retorna uma List com uma determinada pesquisa no banco de dados. Até então, esta List retorna certo, pois percorrendo ela desta maneira:

for (Usuario busca : buscas) {
    System.out.println(busca.getNom_Usuario());
}

Funciona corretamente! Porém eu quis melhorar um pouco meu código fazendo desta meneira:

buscas.forEach(busca -> System.out.println(busca.getNom_usuario()));

Só que usando o comando forEach da List me retorna um erro:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at br.com.pubdo.dao.UsuarioDao.findAll(UsuarioDao.java:51)
    at br.com.pubdo.programs.Teste.main(Teste.java:22)
Caused by: javax.persistence.PersistenceException: Unable to configure EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:384)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    at br.com.pubdo.connection.ConnectionFactory.<clinit>(ConnectionFactory.java:8)
    ... 2 more
Caused by: java.lang.RuntimeException: Error while reading file:/E:/PubDo/bin/
    at org.hibernate.ejb.packaging.NativeScanner.getClassesInJar(NativeScanner.java:129)
    at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:484)
    at org.hibernate.ejb.Ejb3Configuration.addMetadataFromScan(Ejb3Configuration.java:474)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:360)
    ... 6 more
Caused by: java.io.IOException: invalid constant type: 18
    at javassist.bytecode.ConstPool.readOne(ConstPool.java:1113)
    at javassist.bytecode.ConstPool.read(ConstPool.java:1056)
    at javassist.bytecode.ConstPool.<init>(ConstPool.java:150)
    at javassist.bytecode.ClassFile.read(ClassFile.java:765)
    at javassist.bytecode.ClassFile.<init>(ClassFile.java:109)
    at org.hibernate.ejb.packaging.AbstractJarVisitor.checkAnnotationMatching(AbstractJarVisitor.java:245)
    at org.hibernate.ejb.packaging.AbstractJarVisitor.executeJavaElementFilter(AbstractJarVisitor.java:211)
    at org.hibernate.ejb.packaging.AbstractJarVisitor.addElement(AbstractJarVisitor.java:172)
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:125)
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:133)
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:133)
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:133)
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:133)
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.doProcessElements(ExplodedJarVisitor.java:91)
    at org.hibernate.ejb.packaging.AbstractJarVisitor.getMatchingEntries(AbstractJarVisitor.java:148)
    at org.hibernate.ejb.packaging.NativeScanner.getClassesInJar(NativeScanner.java:126)
    ... 9 more

Alguém saberia me dizer o por que de um modo funcionar e do outro não?

1 resposta

Deve ter algum método estático que está gerando o erro: ExceptionInInitializerError

esse erro ocorre quando dentro de um método estático que lança uma exception, você precisa trata-la!

seguindo o stack, veja

Caused by: javax.persistence.PersistenceException: Unable to configure EntityManagerFactory

depois

Caused by: java.lang.RuntimeException: Error while reading file:/E:/PubDo/bin/

e a raiz

Caused by: java.io.IOException: invalid constant type: 18

Algum método estático que gera uma exception não pode ser criado no momento da compilação porque você não tratou a exception.