[RESOLVIDO] k19 - Desenvolvimento Web com JSF2 e JPA2
15 respostas
T
tiagostrokes
Olá, essa minha primeira mensagem para o grupo.
estou estudando uma apostila da k19 - Desenvolvimento Web com JSF2 e JPA2, e em um dos exercicios fiquei parado em um erro que é o seguinte.
Exception in thread “main” java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at javax.persistence.Persistence.findAllProviders(Persistence.java:80)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:49)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at ListaEditorasComJPA.main(ListaEditorasComJPA.java:12)
segue a classe.
importjava.util.List;importjavax.persistence.EntityManager;importjavax.persistence.EntityManagerFactory;importjavax.persistence.Persistence;importjavax.persistence.Query;publicclassListaEditorasComJPA{publicstaticvoidmain(String[]args){EntityManagerFactoryfactory=Persistence.createEntityManagerFactory("livraria");EntityManagermanager=factory.createEntityManager();Queryquery=manager.createQuery("SELECT e FROM Editora e");List<Editora>editoras=query.getResultList();for(Editorae:editoras){System.out.println("EDITORA: "+e.getNome()+" - "+e.getEmail());}}}
quanto ao seu código aconselho a usar as tags code (com code entre “[” e “]”, tem botão para ajudar nisso em cima do textarea da mensagem quando você a posta).
agora quanto ao erro eu desconfio que nem todos os jars de libs que sua aplicação precisa foram adicionadas ao seu classpath, posta ai quais jars você está usando.
uma coisa que você pode fazer , dica para quando tiver essa exceção, NoClassDefFoundError, é pesquisar em qual jar fica a a classe que deu o erro, download do jar e add ele no seu classpath, o www.findjar.com pode te ajudar com isso…
Olá, essa minha primeira mensagem para o grupo.
estou estudando uma apostila da k19 - Desenvolvimento Web com JSF2 e JPA2, e em um dos exercicios fiquei parado em um erro que é o seguinte.
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at javax.persistence.Persistence.findAllProviders(Persistence.java:80)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:49)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at ListaEditorasComJPA.main(ListaEditorasComJPA.java:12)
segue a classe.
importjava.util.List;importjavax.persistence.EntityManager;importjavax.persistence.EntityManagerFactory;importjavax.persistence.Persistence;importjavax.persistence.Query;publicclassListaEditorasComJPA{publicstaticvoidmain(String[]args){EntityManagerFactoryfactory=Persistence.createEntityManagerFactory("livraria");EntityManagermanager=factory.createEntityManager();Queryquery=manager.createQuery("SELECT e FROM Editora e");List<Editora>editoras=query.getResultList();for(Editorae:editoras){System.out.println("EDITORA: "+e.getNome()+" - "+e.getEmail());}}}
T
tiagostrokes
tentei localizar qual o jar que falta, mas nao consegui.
vou continuar tentando aqui.
obrigado pela força.
Hebert_Coelho
Nesse post aqui eu listo todas a bibliotecas necessárias e forneço o link. Espero que te ajude. Hibernate 3 com JPA 2
T
tiagostrokes
olá pessoal, resolvi o problema do JAR que faltava.
Porem ainda continua com erro.
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named livraria
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at ListaEditorasComJPA.main(ListaEditorasComJPA.java:12)
Hebert_Coelho
Como está seu persistence.xml?
maior_abandonado
além de como esta seu persistence.xml, onde ele esta?
e apenas para ficar ai a dica caso alguém chegue pelo google aqui, qual era o jar faltante?
T
tiagostrokes
olá pessoal, resolvi o seguinte erro com o [b][color=blue] hibernate-jpa-2.0-api-1.0.0.final.jar[/color][size=18][/size] que faltava no classpath
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at javax.persistence.Persistence.findAllProviders(Persistence.java:80)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:49)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at ListaEditorasComJPA.main(ListaEditorasComJPA.java:12)
maior_abandonado
ok, poste seu persistence.xml e a localização dele
que eu me lembre (tem muuuuito tempo que não mecho com jpa mesmo ao invés de hibenrate) a sua pasta META-INF tem que ficar dentro do seu diretório de fontes, no src, como se fosse um pacote e o persistence.xml la dentro.
em projetos web se for seu caso você coloca do lado da WEB-INF eu acho… não tenta certeza (tenta um e se não der certo tenta o outro).
outra coisa, la na sua tag persistence-unit o atributo name name deve estar com o mesmo nome que você passa no método createEntityManagerFactory, então ou você muda na tag para “livraria” ou no método para K19, deixe os dois com a mesma string… e ai então vocÊ testa a pasta nos dois endereços que falei, acho que é no primeiro… isso me baseando em quando eu vi JPA 1, acredito que no JPA 2 isso não tenha mudado.
posta ai se der certo ou se não…
T
tiagostrokes
sim o meu projeto é desktop.
pessoal, rodei o exemplo em casa e tive um outro erro.
pesquisei na net e vi que são refenre ao log4j
olá pessoal resolvi todos os problemas acredito seja as versoes JAR diferentes... segue um resumo de como ficou.
packageJPA;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;@EntitypublicclassEditora{@Id@GeneratedValueprivateLongid;privateStringnome;privateStringemail;publicLonggetId(){returnid;}publicvoidsetId(Longid){this.id=id;}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){this.email=email;}// GETTERS AND SETTERS}
packageJPA;importjava.util.Scanner;importjavax.persistence.EntityManager;importjavax.persistence.EntityManagerFactory;importjavax.persistence.Persistence;publicclassInsereEditoraComJPA{publicstaticvoidmain(String[]args){EntityManagerFactoryfactory=Persistence.createEntityManagerFactory("livraria");EntityManagermanager=factory.createEntityManager();EditoranovaEditora=newEditora();Scannerentrada=newScanner(System.in);System.out.println("Digite o nome da editora: ");novaEditora.setNome(entrada.nextLine());System.out.println("Digite o email da editora: ");novaEditora.setEmail(entrada.nextLine());manager.persist(novaEditora);manager.getTransaction().begin();manager.getTransaction().commit();factory.close();}}
packageJPA;importjava.util.List;importjavax.persistence.EntityManager;importjavax.persistence.EntityManagerFactory;importjavax.persistence.Persistence;importjavax.persistence.Query;publicclassListaEditoraComJPA{publicstaticvoidmain(String[]args){EntityManagerFactoryfactory=Persistence.createEntityManagerFactory("livraria");EntityManagermanager=factory.createEntityManager();Queryquery=manager.createQuery("SELECT e FROM Editora e");List<Editora>editoras=query.getResultList();for(Editorae:editoras){System.out.println("EDITORA: "+e.getNome()+" - "+e.getEmail());}}}