SSH框架学习开发第一个集合项目经验01

在编写junit调用hibernate进行数据库操作会提示以下错误

 1 java.lang.ExceptionInInitializerError
 2     at com.sisi.registration.service.UserManager.exists(UserManager.java:11)
 3     at com.sisi.registration_service.UserManagerTest.testExists(UserManagerTest.java:17)
 4     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 5     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 6     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 7     at java.lang.reflect.Method.invoke(Method.java:597)
 8     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
 9     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
10     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
11     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
12     at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
13     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
14     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
15     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
16     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
17     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
18     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
19     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
20     at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
21     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
22     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
23     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
24     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
25     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
26     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
27 Caused by: org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
28     at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1542)
29     at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1035)
30     at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)
31     at org.hibernate.cfg.Configuration.configure(Configuration.java:1476)
32     at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017)
33     at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)
34     at org.hibernate.cfg.Configuration.configure(Configuration.java:1462)
35     at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1011)
36     at com.sisi.registration.util.HibernateUtil.<clinit>(HibernateUtil.java:9)
37     ... 25 more
38 Caused by: org.dom4j.DocumentException: hibernate.sourceforge.Net Nested exception: hibernate.sourceforge.Net
39     at org.dom4j.io.SAXReader.read(SAXReader.java:484)
40     at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1532)
41     ... 33 more

问题根本:因为hibernate的两个配置文件分别都会默认去配置文件上面两个加粗的网站去找,所以当使用hibernate进行数据库操作时,如果你的

网络环境不好或者没联网,此时配置文件无法访问指定的dtd验证文件,所以才会出现xml无法解析的异常

解决办法:

1.在使用hibernate的项目下创建文件夹将hibernate-configuration-3.0.dtd文件和hibernate-mapping-3.0.dtd两个文件放在里面

2.并且把hibernate.cfg.xml文件头部分改为

1 <?xml version='1.0' encoding='UTF-8'?>
2 <!DOCTYPE hibernate-configuration PUBLIC
3           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4           "dtd/hibernate-configuration-3.0.dtd">
5           
6 <!-- Generated by MyEclipse Hibernate Tools.   这里dtd是我创建的文件名                -->

下载地址

hibernate-mapping-3.0.dtd  :  http://download.csdn.net/detail/congwiny/7047309

hibernate-configuration-3.0.dtd  :  http://download.csdn.net/download/dielianhua813/4070917

最后重启myeclipse调用junit,OK了!

原文地址:https://www.cnblogs.com/sisi-job/p/6633169.html