2014-12-21 5 views
0

Я столкнулся с проблемой с jpa + hibernate в среде равноденствия. Я получаю исключение,Класс HibernatePersistence не найден исключение с JPA + Hibernate + OSGI

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter#53308cd' defined in OSGi resource[classpath:/spring/gdl-commons-db-jpa-context.xml|bnd.id=177|bnd.sym=gdl-open-domain]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1037) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:983) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:271) 
    ... 34 common frames omitted 
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1030) 
    ... 38 common frames omitted 
Caused by: java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence 
    at org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter.<init>(HibernateJpaVendorAdapter.java:57) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148) 
    ... 40 common frames omitted 

Вы найдете ниже о моих банках детали

com.springsource.javassist-3.15.0.GA.jar       
hibernate-core-3.3.2.GA.jar    
com.springsource.javax.transaction-1.1.0.jar      
hibernate-core-4.1.9.Final.jar   
com.springsource.org.hibernate-4.1.0.Final.jar      
com.springsource.org.hibernate.annotations.common-3.3.0.ga.jar  
hibernate-entitymanager-3.4.0.GA.jar  
com.springsource.org.hibernate.annotations.common-4.0.1.Final.jar 
hibernate-entitymanager-4.1.9.Final.jar         
hibernate-annotations-3.4.0.GA.jar         
hibernate-jpa-2.0-api-1.0.1.Final.jar  
spring-data-commons-1.6.0.RELEASE.jar 
hibernate-validator-4.0.2.GA.jar 

Мой manifest.mf является

Import-Package: org.springframework.data.jpa.domain.support;version="[ 
1.3,2)",org.springframework.data.jpa.repository;version="[1.3,2)",org 
.springframework.data.repository;version="[1.5,2)",javax.sql,org.apac 
he.commons.pool;version="[1.5,2)",org.apache.commons.pool.impl;versio 
n="[1.5,2)",org.springframework.orm.jpa.persistenceunit,org.springfra 
mework.core.io,org.springframework.core.type.classreading,org.springf 
ramework.core.io.support,org.springframework.core.type.filter,org.spr 
ingframework.util,org.springframework.core.type,javax.persistence;version="1.0.1";jpa 
="2.0",javassist.util.proxy;resolution:=optional,org. 
hibernate,org.springframework.orm.jpa,org.hibernate.ejb,org.springfra 
mework.orm.jpa.vendor,org.springframework.dao.annotation,org.springfr 
amework.jmx.export.assembler,org.springframework.jmx.support,org.spri 
ngframework.beans.factory.config,org.springframework.beans.factory.as 
pectj,org.hibernate.proxy,org.springframework.aop.aspectj.autoproxy,o 
rg.springframework.aop.interceptor,org.hibernate.ejb.connection,javax.persistence.criteria 

Meta-Persistence: META-INF/persistence.xml 
Spring-Context: spring/*.xml 

Пожалуйста, помогите мне решить этот класс не найден исключение.

Спасибо,

gopy

Отредактировано:

Тем не менее я перед проблемой теперь я использую hibernate-release-4.3.7.Final,

Хорошо, позвольте мне объяснить, что я структуры проекта и дайте мне понять, где я пропал без вести,

В настоящее время наша система имеет один файл войны внутри так много файлов jar. Поэтому мне нужно перейти на osgi и вынести все связанные с бизнесом jar для настройки модуля.

Итак, изначально я вынимаю какую-то важную библиотеку и преобразую ее в виде пакета.

Позволяет сказать,

Bundle_A является главным расслоением и внутри содержат много зависимостей третьей стороны, в том числе нашей библиотеки library_b связанных приложений, library_c и т.д.

Все библиотеки импортируются как Bundle-ClassPath от Bundle_A,

library_b, library_c, имеющий собственную spring.xml с некоторой конфигурации, которые загружаются из Bundle_A

library_b, spring.xml с JPARepositoryImpl и конфигурацией. У нас есть некоторые репозитории в Bundle_A, также ссылающиеся на реализацию library_a. Кажется, я получаю исключение, так как класс JPARepositoryImpl не загружается должным образом. Класс не найден исключение.

Найти некоторые исключения ниже, пожалуйста,

nested exception is java.lang.NoClassDefFoundError: com.domain.jpa.impl.MyRepositoryFactoryBean not found from bundle [My Platform Domain (My--domain)] 
Related cause: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.data.jpa.domain.support.AuditingEntityListener] for bean with name 'org.springframework.data.jpa.domain.support.AuditingEntityListener' defined in null: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org.springframework.data.jpa.domain.support.AuditingEntityListener not found from bundle [My Platform Domain (My--domain)] 
Related cause: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.domain.jpa.impl.MyRepositoryFactoryBean] for bean with name 'communicationSettingRepository' defined in null: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: com.domain.jpa.impl.MyRepositoryFactoryBean not found from bundle [My Platform Domain (My--domain)] 
Related cause: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.domain.jpa.impl.MyRepositoryFactoryBean] 

.. .. .. и т.д.

Это огромное исключение, потому что у меня есть много таких, как хранилища communicationSettingRepository, поэтому его печать всех хранилищ имени такие, как

Error loading class [com.domain.jpa.impl.MyRepositoryFactoryBean] for bean with name 'repository' defined in null 

конец исключением является

Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy 
    at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:715) 
    at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:522) 
    at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:348) 
    at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:283) 
    at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:117) 
    at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:70) 
    at java.lang.Class.initAnnotationsIfNecessary(Class.java:3271) 
    at java.lang.Class.initAnnotationsIfNecessary(Class.java:3278) 
    at java.lang.Class.getAnnotation(Class.java:3219) 
    at java.lang.Class.isAnnotationPresent(Class.java:3232) 
    at org.hibernate.annotations.common.reflection.java.JavaAnnotationReader.isAnnotationPresent(JavaAnnotationReader.java:50) 
    at org.hibernate.annotations.common.reflection.java.JavaXAnnotatedElement.isAnnotationPresent(JavaXAnnotatedElement.java:60) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.syncAnnotatedClasses(Configuration.java:3780) 
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1411) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1846) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845) 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844) 
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:67) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:288) 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509) 
    ... 31 common frames omitted 

Надеюсь, вы, ребята, можете угадать актуальную проблему? Пожалуйста, помогите мне решить эту проблему.

ответ

6

hibernate-entitymanager-4.1.9.Final.jar должен отсутствовать класс. У вас есть несколько версий библиотек спящего режима в вашем пути к классам. 3.x и 4.x. Я предлагаю вам скачать последние hibernate version и заменить их на текущие кластеры классов.

Также как примечание стороны org/hibernate/ejb/HibernatePersistence устарело. org.hibernate.jpa.HibernatePersistenceProvider - это правильный провайдер постоянства, который будет использоваться, если вы используете стандарт JPA.

+0

@AndyDufrense, вы можете посмотреть на этот вопрос http://stackoverflow.com/questions/27602318/hibernate-myinterceptoronflushdirty-is-never-called pls? –

 Смежные вопросы

  • Нет связанных вопросов^_^