Java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence [RESOLVIDO]

Amigos,

tenho um projeto que esta divido em 3 partes, um WEB outro EJB e um EAR, estou mudando o servidor de aplicação de Jboss 7 para WebLogic mas esta dando o erro abaixo, fiz esta mudança para outros 2 projetos e adicionei o jar hibernate-3.5.3.jar e resolvi o problema, acontece que com esse projeto dividido em 3 eu adicionei o jar mas não esta sendo reconhecido e esta estourando essa exceção

weblogic.application.ModuleException: weblogic.application.naming.EnvironmentException: Error processing persistence unit ProjetoDS of module ProjetoEJB.jar: Error instantiating the Persistence Provider class org.hibernate.ejb.HibernatePersistence of the PersistenceUnit ProjetoDS: java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence
	at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:114)
	at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
	at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:175)
	at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:170)
	at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:80)
	at weblogic.work.ContextWrap.run(ContextWrap.java:40)
	at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:548)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Caused by: weblogic.application.naming.EnvironmentException: Error processing persistence unit ProjetoDS of module ProjetoEJB.jar: Error instantiating the Persistence Provider class org.hibernate.ejb.HibernatePersistence of the PersistenceUnit ProjetoDS: java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence
	at weblogic.persistence.BasePersistenceUnitInfo.getPersistenceProvider(BasePersistenceUnitInfo.java:444)
	at weblogic.persistence.BasePersistenceUnitInfo.initializeEntityManagerFactory(BasePersistenceUnitInfo.java:461)
	at weblogic.persistence.BasePersistenceUnitInfo.initializeEntityManagerFactory(BasePersistenceUnitInfo.java:454)
	at weblogic.persistence.BasePersistenceUnitInfo.init(BasePersistenceUnitInfo.java:141)
	at weblogic.persistence.BaseJPAIntegrationProvider.createPersistenceUnitInfo(BaseJPAIntegrationProvider.java:54)
	at weblogic.persistence.AbstractPersistenceUnitRegistry.storeDescriptors(AbstractPersistenceUnitRegistry.java:423)
	at weblogic.persistence.AbstractPersistenceUnitRegistry.loadPersistenceDescriptor(AbstractPersistenceUnitRegistry.java:342)
	at weblogic.persistence.ModulePersistenceUnitRegistry.<init>(ModulePersistenceUnitRegistry.java:67)
	at weblogic.ejb.container.deployer.EJBModule.setupPersistenceUnitRegistry(EJBModule.java:190)
	at weblogic.ejb.container.deployer.EJBModule$1.execute(EJBModule.java:297)
	at weblogic.persistence.PersistenceUnitRegistryInitializer.setupPersistenceUnitRegistries(PersistenceUnitRegistryInitializer.java:61)
	at weblogic.servlet.internal.WebAppInternalModuleExtension$PersistenceExtension.initPersistenceUnitRegistry(WebAppInternalModuleExtension.java:260)
	at weblogic.servlet.internal.WebAppInternalModuleExtension$PersistenceExtension.access$300(WebAppInternalModuleExtension.java:188)
	at weblogic.servlet.internal.WebAppInternalModuleExtension.prePrepare(WebAppInternalModuleExtension.java:57)
	at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:293)
	at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:285)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
	at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:109)

A exception é clara: A classe não ta sendo encontrada. Então o que você disse que fez, adicionar o jar do hibernate que contém a classe seria a minha primeira tentativa. Olha se isso realmente foi feito direito.

As vezes, usando IDE com maven e etc, o que nós fazemos no ambiente pode não ser traduzido com exatidão no deploy. Então tenta publicar o seu EAR e depois vai no sistema de arquivos do seu computador e confirmar se o arquivo .jar foi realmente parar dentro do diretório lib do seu ear.

Fiz isso, descompactei o EAR e dentro dele tem um pacote EJB e um WEB e dentro do pacote WEB tenho o Jar e dentro do pacote EJB tenho os .class

Acredito que o hibernate jar tem que ficar no lib do EAR, e não no lib do WAR.

Mas o ClassNotFoundException esta acontecendo no ProjetoEJB

Thiago,

vc disse que tem 3 projetos, no projeto EJB tem a lib do Hibernate ?
se sim. Vai nas propriedades do projeto EAR lá deve ter uma opção como “Deployment Assembly” exclui o projeto EJB de lá, e depois adiciona novamente com essa lib do Hibernate.

1 curtida

Muito Obrigado deu certo Robson