【发布时间】:2020-09-05 08:12:14
【问题描述】:
我正在更新一个 10 多年前的旧 web 应用程序,我必须更新一些 Spring 和 Hibernate 依赖项才能与更新的 JDK 和应用程序服务器一起使用。现在我正试图让我的一个单元测试运行,但它在注入依赖项时遇到了问题。
我的应用是使用注释配置的。我有一个 AppConfig 类,它有一个 @Bean AnnotationSessionFactoryBean sessionFactory() 方法:
@Configuration
@EnableAsync
@EnableTransactionManagement
@ComponentScan(basePackageClasses = { <redacted>.model.User.class,
<redacted>.dao.UserDAOHibernate.class,
<redacted>.web.services.PushService.class })
public
class
AppConfig
{
@Bean
public
AnnotationSessionFactoryBean
sessionFactory()
{
DataSource dataSource = (DataSource) dataSource().getObject();
AnnotationSessionFactoryBean bean = new AnnotationSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setPackagesToScan(new String[] {"<redacted>.model"});
// bean configuration here
return bean;
}
}
测试类的样子
@RunWith(org.springframework.test.context.junit4.SpringJUnit4ClassRunner.class)
@WebAppConfiguration("file:target/build")
@ContextConfiguration(classes = {
<redacted>.AppConfig.class,
<redacted>.WebConfig.class })
public class TestController
{
// tests
}
当我使用mvn test 运行测试时,我收到此错误:
Error creating bean with name 'sessionFactory' defined in <redacted>.AppConfig:
Invocation of init method failed; nested exception is org.hibernate.HibernateException:
Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
请注意,我没有在我的应用程序的任何地方使用 spring-boot。
我在网上找到的所有东西不仅很旧,而且似乎表明它与各种依赖项的版本有关,而且 suggested 命名的 bean 缺少它的 setter。但是sessionFactory不是成员变量,是返回工厂的方法。
当我写这篇文章时,Hibernate 3 是最新的。我目前使用的是hibernate-core 3.6.10.Final、Spring(core、orm、test等)4.3.27.RELEASE。
它指的是什么初始化方法?有什么想法吗?谢谢。
更新:似乎我的 sessionFactory() 方法被调用并执行得很好(通过日志记录验证),所以我真的不确定错误消息告诉我什么。
Maven 测试输出和堆栈跟踪:
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running <redacted>.web.TestController
May 19, 2020 3:07:51 AM org.springframework.test.context.web.WebTestContextBootstrapper getDefaultTestExecutionListenerClassNames
INFO: Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
May 19, 2020 3:07:51 AM org.springframework.test.context.web.WebTestContextBootstrapper getTestExecutionListeners
INFO: Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@564718df, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@51b7e5df, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@18a70f16, org.springframework.test.context.support.DirtiesContextTestExecutionListener@62e136d3, org.springframework.test.context.transaction.TransactionalTestExecutionListener@c8e4bb0, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@6279cee3]
May 19, 2020 3:07:51 AM org.springframework.mock.jndi.SimpleNamingContextBuilder activate
INFO: Activating simple JNDI environment
May 19, 2020 3:07:51 AM org.springframework.mock.jndi.SimpleNamingContextBuilder bind
INFO: Static JNDI binding: [java:comp/env/jdbc/db] = [ds0: url=jdbc:h2:mem:testmdb;MODE=MySQL;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=0;TRACE_LEVEL_FILE=0;IGNORECASE=false; user=testuser]
May 19, 2020 3:07:51 AM org.springframework.mock.jndi.SimpleNamingContextBuilder bind
INFO: Static JNDI binding: [java:comp/env/apns/prod/keystorePath] = [<unset>]
May 19, 2020 3:07:51 AM org.springframework.mock.jndi.SimpleNamingContextBuilder bind
INFO: Static JNDI binding: [java:comp/env/apns/prod/keystorePassword] = [<unset>]
May 19, 2020 3:07:51 AM org.springframework.mock.jndi.SimpleNamingContextBuilder bind
INFO: Static JNDI binding: [java:comp/env/apns/dev/keystorePath] = [<unset>]
May 19, 2020 3:07:51 AM org.springframework.mock.jndi.SimpleNamingContextBuilder bind
INFO: Static JNDI binding: [java:comp/env/apns/dev/keystorePassword] = [<unset>]
May 19, 2020 3:07:51 AM org.springframework.web.context.support.GenericWebApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.GenericWebApplicationContext@3f6db3fb: startup date [Tue May 19 03:07:51 PDT 2020]; root of context hierarchy
May 19, 2020 3:07:52 AM org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor <init>
INFO: JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
03:07:52.141 [main] ERROR <redacted>.web.config.AppConfig - here
03:07:52.214 [main] ERROR <redacted>.web.config.AppConfig - foo
03:07:52.232 [main] ERROR <redacted>.web.config.AppConfig - dataSource: ds0: url=jdbc:h2:mem:testmdb;MODE=MySQL;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=0;TRACE_LEVEL_FILE=0;IGNORECASE=false; user=testuser
03:07:52.235 [main] ERROR <redacted>.web.config.AppConfig - bean: org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean@1d12b024
03:07:52.236 [main] ERROR <redacted>.web.config.AppConfig - returning bean
[main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
[main] INFO org.hibernate.cfg.Environment - Hibernate 3.6.10.Final
[main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
[main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
[main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.APNsToken
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.APNsToken on table APNsToken
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.DataRequest
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.DataRequest on table DataRequest
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.Device
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.Device on table Device
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.Image
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.Image on table Image
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.Mission
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.Mission on table Mission
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.MissionEvent
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.MissionEvent on table MissionEvent
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.NewsItem
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.NewsItem on table NewsItem
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.ObjectGroup
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.ObjectGroup on table SatelliteGroup
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.ProblemReport
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.ProblemReport on table ProblemReport
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.Satellite
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.Satellite on table Satellite
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.TLE
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.TLE on table TLE
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.Text
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.Text on table Text
[main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: <redacted>.model.User
[main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity <redacted>.model.User on table User
[main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: <redacted>.model.Device.mDataRequests -> DataRequest
[main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: <redacted>.model.Device.mTokens -> APNsToken
[main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: <redacted>.model.Mission.mEvents -> MissionEvent
[main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: <redacted>.model.Mission.mImages -> Image
[main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: <redacted>.model.ObjectGroup.mChildren -> SatelliteGroup
[main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: <redacted>.model.ObjectGroup.mObjects -> Satellite
[main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: <redacted>.model.Satellite.mTLEs -> TLE
[main] INFO org.hibernate.cfg.Configuration - Hibernate Validator not found: ignoring
May 19, 2020 3:07:52 AM org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean buildSessionFactory
INFO: Building new Hibernate SessionFactory
[main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
[main] INFO org.hibernate.connection.ConnectionProviderFactory - Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
[main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
[main] INFO org.hibernate.cfg.SettingsFactory - Database ->
name : H2
version : 1.4.200 (2019-10-14)
major : 1
minor : 4
[main] INFO org.hibernate.cfg.SettingsFactory - Driver ->
name : H2 JDBC Driver
version : 1.4.200 (2019-10-14)
major : 1
minor : 4
[main] INFO org.hibernate.transaction.TransactionFactoryFactory - Transaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory
[main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
[main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 200
[main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
[main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled
[main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
[main] INFO org.hibernate.cfg.SettingsFactory - Maximum outer join fetch depth: 2
[main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
[main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
[main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
[main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
[main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
[main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge
[main] INFO org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge - Cache provider: org.hibernate.cache.NoCacheProvider
[main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Statistics: enabled
[main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
[main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
[main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled
[main] INFO org.hibernate.cfg.SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): disabled
[main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
[main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [blob] overrides previous : org.hibernate.type.BlobType@5de5e95
[main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [java.sql.Blob] overrides previous : org.hibernate.type.BlobType@5de5e95
[main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [wrapper_materialized_blob] overrides previous : org.hibernate.type.WrappedMaterializedBlobType@365cdacf
[main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [materialized_clob] overrides previous : org.hibernate.type.MaterializedClobType@303c55fa
[main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [wrapper_characters_clob] overrides previous : org.hibernate.type.CharacterArrayClobType@9efcd90
[main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [materialized_blob] overrides previous : org.hibernate.type.MaterializedBlobType@7eb200ce
[main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [characters_clob] overrides previous : org.hibernate.type.PrimitiveCharacterArrayClobType@2ee83775
[main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [clob] overrides previous : org.hibernate.type.ClobType@7c2924d7
[main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [java.sql.Clob] overrides previous : org.hibernate.type.ClobType@7c2924d7
May 19, 2020 3:07:52 AM org.springframework.web.context.support.GenericWebApplicationContext refresh
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataRequestDAOHibernate': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in <redacted>.web.config.AppConfig: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
May 19, 2020 3:07:52 AM org.springframework.test.context.TestContextManager prepareTestInstance
SEVERE: Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener@564718df] to prepare test instance [<redacted>.web.TestController@39ee94de]
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:189)
at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:131)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:377)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:138)
at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:465)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:451)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataRequestDAOHibernate': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in <redacted>.web.config.AppConfig: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:321)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1257)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:757)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:130)
at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:61)
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:281)
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:249)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
... 28 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in <redacted>.web.config.AppConfig: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1619)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1063)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:518)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:496)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:627)
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:171)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:318)
... 44 more
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:108)
at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:133)
at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:80)
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:322)
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:485)
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:133)
at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:84)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:286)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:795)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:191)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1677)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1615)
... 59 more
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:105)
... 72 more
Caused by: java.lang.NoClassDefFoundError: javassist/util/proxy/MethodFilter
at org.hibernate.bytecode.javassist.BytecodeProviderImpl.getProxyFactoryFactory(BytecodeProviderImpl.java:49)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactoryInternal(PojoEntityTuplizer.java:205)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:183)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:167)
at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:77)
... 78 more
Caused by: java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 83 more
【问题讨论】:
-
请包含完整的 stracktrace。此外,在升级依赖项和东西时,一次只做一件事。还要从一个版本升级到另一个版本(因此,如果您使用的是 3.1,请不要直接升级到 4.3,因为那里有太多更改)。有关一些提示,请参阅mdeinum.github.io/…。关于看起来你正在混合来自 Hibernate 的不兼容的东西,所以要么混合来自休眠的 jar,要么使用与 Spring 4.3 不兼容的休眠版本。最后,每次升级后,您应该确保一切正常!
-
@Rick 也许this 会有所帮助
-
我添加了堆栈跟踪。是的,相信我,我尝试尽可能少地更新,但在过去的 48 小时内我遇到了很多问题(使用 servlet 容器、ant/ivy/maven 等),这就是我现在所处的位置。 FWIW 这部分现在在 Tomcat 中运行,但我正在尝试清理其余部分。
-
@SternK 我发现了这个问题。接受的答案不是我的答案,但我想我可能已经找到了。待命……
-
是的,我只是看的不够远。缺少 javassist。谢谢你,@SternK!如果您将其添加为答案,我会将其标记为已回答。
标签: spring hibernate spring-test spring-annotations spring-test-mvc