[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5329?page=c...
]
Francesco Poli commented on HHH-5329:
-------------------------------------
Emmanuel, I'm working with a J2SE 1.4 included in Bea WebLogic 8.1; the stack trace is
the following:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'sessionFactory' defined in class path resource
[hibernate-definitions.xml]: Invocation of init method failed; nested exception is
java.lang.NoClassDefFoundError: java/util/concurrent/ConcurrentMap
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
... 62 more
Caused by: java.lang.NoClassDefFoundError: java/util/concurrent/ConcurrentMap
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:1618)
at java.lang.Class.getConstructor0(Class.java:1930)
at java.lang.Class.getConstructor(Class.java:1027)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:204)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
at
org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:814)
at
org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:732)
at
org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
... 72 more
So, the error occurrs not on line 204:
Constructor constructor = concurrentStatsClass.getConstructor(new
Class[]{SessionFactoryImplementor.class});
It's not a problem of instantiation, it's a linker error.
NoClassDefFoundError when using Hibernate 3.5 with J2SE 1.4 because
of a wrong catch block
------------------------------------------------------------------------------------------
Key: HHH-5329
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5329
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.5.0-Final
Environment: Hibernate 3.5, Java SE 1.4 or J2EE 1.3
Reporter: Francesco Poli
Assignee: Emmanuel Bernard
Priority: Blocker
Fix For: 3.5.x
In org.hibernate.impl.SessionFactoryImpl is done this check when looking for concurrent
classes during the creation of the SessionFactory:
Statistics concurrentStatistics = null;
try {
Class concurrentStatsClass =
ReflectHelper.classForName("org.hibernate.stat.ConcurrentStatisticsImpl");
Constructor constructor = concurrentStatsClass.getConstructor(new
Class[]{SessionFactoryImplementor.class});
concurrentStatistics = (Statistics) constructor.newInstance(new Object[]{this});
log.trace("JDK 1.5 concurrent classes present");
} catch (Exception noJava5) {
log.trace("JDK 1.5 concurrent classes missing");
}
But what is thrown is a NoClassDefFoundError, which is not an Exception.
As a consequence, the catch block won't work and the error is propagated to the upper
levels of the application.
I suggest to modify the catch arguments to match the correct type of the thrown object.
Thank you.
Bye
Francesco Poli
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira