纯手工编写第一个Hibernate程序 (三)

2014-11-24 08:24:30 · 作者: · 浏览: 2
h。注意,hibernate3.jar必须要有,不能因为它只是把class文件打包,就认为不需要提供JAR包名JAVA能够找到相应的class文件,JAR包也类似于一层目录。如果犯了这种错误就很难排错了。
运行完此命令后,我们再来编译,就没有问题了。
编译成功后,接下来就是运行了。既然编译都成功了,那么成功运行不就是顺理成章的事情吗?在运行前要保证开启了SQL Server服务,不然怎么访问数据库呢?在命令窗口中输入如下命令来运行我们的程序:java TestHibernate。
就在你万分激动地等待自己的第一个hibernate程序正确执行的时候,程序却很不“识趣”地报出了错误信息:java.lang.NoClassDefFoundError。
是不是犹如被泼了一瓢冷水?别灰心,学习程序设计经常遇到这种事情。遇到了并不可怕,只要我们仔细分析错误信息,是能够找到错误原因的。这个错误信息是说,它找不到org.dom4j.DocumentException这个类的定义。我们在程序中并没有使用这个类,那么我们可以顺理成章地猜想,应该是Hibernate使用了这个类。这个类在JAR包dom4j-1.6.1.jar中,而这个JAR包我们已经把它放到了lib目录下了。我们现在需要做的,就是运行类似于上一条的set命令,把此JAR包添加进classpath环境变量中,好让JAVA能够找到类org.dom4j.DocumentException的定义。
实际上,放置在lib目录下的每个JAR包都要用到。上面的方法解决了类org.dom4j.DocumentException的问题后,但还会有很多Hibernate要用到的,或被Hibernate调用的其他模块要用到的类找不到。这些类都包含在剩下的那些JAR包中。读者可以自己试一下,如果现在运行程序,它还会报错说XX类找不到,我们就又得把这个类所在的JAR包添加到classpath环境变量里。然后又会报错说YY类找不到,直到我们把所有的JAR包都添加进去。为把这些JAR包一次性地添加到classpath中,笔者写了一个批处理文件setclasspath.bat,放置在FirstHibernate目录下。如果你建立的目录和目录结构,以及各文件的存放位置,都与笔者完全一致(包括所在的盘,我这里是E盘),那么这个批处理文件你就可以直接使用。其源码如下(用UltraEdit或Windows记事本等文本编辑器创建一个文本文件,然后将其后缀名改为bat,就能创建一个批处理文件。再用文本编辑器打开就能输入想要执行的DOS命令)。
set classpath=.;E:\DemoPrograms\FirstHibernate\lib\hibernate3.jar;E:\DemoPrograms\FirstHibernate\lib\sqljdbc4.jar;E:\DemoPrograms\FirstHibernate\lib\dom4j-1.6.1.jar;E:\DemoPrograms\FirstHibernate\lib\slf4j-api-1.6.2.jar;E:\DemoPrograms\FirstHibernate\lib\slf4j-simple-1.6.2.jar;E:\DemoPrograms\FirstHibernate\lib\hibernate-jpa-2.0-api-1.0.1.Final.jar;E:\DemoPrograms\FirstHibernate\lib\cglib-2.2.jar;E:\DemoPrograms\FirstHibernate\lib\commons-collections-3.1.jar;E:\DemoPrograms\FirstHibernate\lib\javassist-3.12.0.GA.jar;E:\DemoPrograms\FirstHibernate\lib\jta-1.1.jar 现在再来运行程序。
作者:肖凡