NetBeans Spring MVC+Hibernate项目部署Tomcat报hibernate.cfg.xml不存在及后续错误求解
问题排查与解决方案
1. hibernate.cfg.xml找不到报错解决
该错误的核心原因是hibernate.cfg.xml没有被正确打包到WAR包的WEB-INF/classes目录下,导致Spring读取classpath资源时无法找到文件。
你之前修改路径为classpath:java/hibernate.cfg.xml的操作是错误的:NetBeans项目中src/java为源码根目录,编译后该目录下的文件会直接输出到classes根路径,不会额外生成java层级目录。
正确操作二选一即可:
- 方案一:在项目下新建
src/resources目录,标记为「资源根目录」,将hibernate.cfg.xml移动到该目录下,保持applicationContext.xml的配置为:
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> </bean>
- 方案二:保留
hibernate.cfg.xml在src/java目录,修改NetBeans构建配置,将src/java加入资源扫描路径,确保编译时xml文件被复制到classes目录,无需修改Spring配置。
2. java.lang.NoSuchFieldError: TRACE报错解决
该错误是典型的日志依赖版本冲突:
Hibernate4依赖的日志组件需要日志实现类的Level类存在TRACE级别字段,如果你项目中引入了低于1.2.12版本的log4j,就会出现该报错,旧版log4j没有内置TRACE级别。
解决方案:
- 排查WAR包
WEB-INF/lib目录下的日志相关jar包,移除重复、版本过低的log4j、slf4j-api、slf4j-log4j12等包 - 统一升级log4j版本到1.2.14及以上,或者改用logback作为日志实现
- 额外检查Spring版本与Hibernate4的兼容性:确保
spring-orm包的版本适配Hibernate4,不要跨大版本混用(比如Spring3配Hibernate5)。
内容的提问来源于stack exchange,提问作者PHUPHA
相关产品推荐
相关产品推荐

