- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题,一直在使用 Hibernate 3.6.0 很长时间(或这里的版本)。该项目自 2009 年以来一直在开发,并且缓慢但稳步地升级了 Hibernate 版本。它已经使用 3.6.x 一段时间了。
我尝试升级到 3.6.3 以查看它是否解决了问题 - 但没有。我的测试仍在运行。
我最近刚刚为 DefaultPreUpdateEventListener 创建了一个实现。当我在 IntelliJ 中对其进行单元测试时,它工作得很好。当我在 Maven 中运行测试时它起作用了。然而,当我在 Tomcat 中运行我的应用程序时,我得到了这个愚蠢的类路径错误:
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [trainingdividend.dao.UpdatedOnEventListener] for bean with name 'trainingdividend.dao.UpdatedOnEventListener#1342f5b' defined in file [C:\Users\egervari\IdeaProjects\trainingdividend-experiment\target\classes\applicationContext.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/hibernate/event/def/DefaultPreUpdateEventListener
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1253)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:433)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270)
... 118 more
Caused by: java.lang.NoClassDefFoundError: org/hibernate/event/def/DefaultPreUpdateEventListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1026)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1483)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:257)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408)
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1271)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1242)
... 120 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.event.def.DefaultPreUpdateEventListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
... 136 more
这真的没有意义。到目前为止,我在运行 Hibernate 时完全没有问题。没有任何。为什么突然间我遇到了 jar hell 问题?我的意思是,这适用于单元/集成测试!
我真的很讨厌这类问题。如果有人能提供帮助,我将不胜感激。我花了 2 个小时试图找出发生了什么,但我认为没有问题。我的 Maven 依赖项看起来不错——它只加载了 1 个版本的 Hibernate。
在这种时候,我希望我使用的是 Rails。我怀疑他们是否能忍受这种废话。
这是我的 Hibernate spring 配置:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="eventListeners">
<map>
<entry key="pre-update">
<bean class="trainingdividend.dao.UpdatedOnEventListener" />
</entry>
</map>
</property>
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>hibernate/coursetemplate.hbm.xml</value>
<value>hibernate/address.hbm.xml</value>
<value>hibernate/user.hbm.xml</value>
<value>hibernate/trainee.hbm.xml</value>
<value>hibernate/company.hbm.xml</value>
<value>hibernate/instructor.hbm.xml</value>
<value>hibernate/module.hbm.xml</value>
<value>hibernate/sysadmin.hbm.xml</value>
</list>
</property>
<property name="namingStrategy">
<bean class="org.hibernate.cfg.ImprovedNamingStrategy"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="javax.persistence.validation.mode">none</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}
</prop>
<prop key="hibernate.generate_statistics">false</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
</props>
</property>
</bean>
最佳答案
检查 jars 是否包含在类路径中。尝试将 jar 放入 tomcat 库中。
如果您使用自定义监听器,您是否尝试过在配置中显式添加事件监听器?
<event type="load">
<listener class="com.eg.MyLoadListener"/>
<listener class="org.hibernate.event.def.DefaultLoadEventListener"/>
</event>
或者你可以实现org.hibernate.event.PreUpdateEventListener
关于java - 使用 Hibernate 3.6.3 时获取 ClassNotFoundException 并且刚刚在 Tomcat 中添加了 DefaultPreUpdateEventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5771647/
实现信息技术的自主可控,可以说是金融行业最紧迫、最重要的推进战略了。 人民银行、银保监会等主管部门密集出台文件,指导金融行业核心领域自主可控技术应用。 拿数据库来说,自主可控这事儿业内也
在methods中创建方法showtime,传入要跟当前时间要对比的时间 ?
其实这个没什么技术含量,当然就直接贴代码,不废话了, 但是在其实开发中还是蛮有用的,譬如论坛帖子,围脖等都有相关应用 复制代码代码如下: function tranTim
今天,杭州人的朋友圈都被这场晚会刷屏了 分散在全球的阿里人都回到杭州,为阿里巴巴送上20周岁的生日祝福。 阿里巴巴20周年年会,被称作“有史以来杭州规模最大的年会”,没有
在很多场合为了显示出信息的及时性,一般会将时间显示成“刚刚”,“5分钟前”,“3小时前”等,而不是直接将时间打印出来。比如微博,SNS类应用就最长用到这个功能。而一般存储在数据库中的时间格式为 Un
我是一名优秀的程序员,十分优秀!