因项目需要使用到数据库,所以正好借此机会学习使用一下听说已久hibernate。出于习惯,首先单独建了一个工程,将hibernate的源码导入。这样做其实有两个目的:一是在使用的时候万一遇到问题,万般无奈的情况下也许可以通过查看源代码找到解决的思路(当然这种情况最好不要碰到,一般也不会碰到);二就是有时间的话了解一下hibernate内部的一些东西(比如架构,实现机制等),同时也学习一下别人的编程风格。
下面说一下我在导入源代码的时候碰到的两个问题,希望能对碰到同样问题的朋友有一点帮助。
1.hibernate源代码中org.hibernate.hql.antlr包
源代码中这个包是空的,没有任何java文件。后来在网上搜了一下,原来这部分代码需要动态生成。方法为点击源码包目录下的build.bat文件。但是直接点击了之后,发现出现了下面的错误:
奇怪的是我的Ant home已经设置了,并且确定没有设错。后来看到源码包目录下有build.xml文件,抱着试试的态度直接键入“ant”命令,没想到居然成功了。执行的结果是多出了一个build目录,org.hibernate.hql.antlr包的代码就在build/gensrc下面。(ant其实我也没用过,只是之前安装并配置过,然后就一直放在那里了,不过网上倒是有很多介绍ant的)
等有时间了再研究一下到底为什么会这样。要是哪位朋友知道其中的原因并能简单的说一下当然是再好不过了。
2. java JDK版本
导入完整的源代码后并导入源码包里的类库后,发现编译有错误。原因是有些类实现了java JDK中的一些接口时,没有实现该接口中的方法,具体的错误信息可以在myeclipse中看到,在这里就不细说了。这种情况一般就是JDK版本的兼容性问题。myeclipse8.5使用的java版本是6.0,虽然后来依次设置使用较低版本,但问题还是没解决。后来查了一下myeclipse的installation的configuration信息,发现原来它实际上只有一个java版本,就是6.0,即只提供6.0的jvm和JRE,虽然在工程里可以设置运行环境为较低的版本,但终归是6.0的类库,还是有编译错误(因此怀疑设置运行环境为较低版本到底有什么用?这里头又是一个什么机制?有空再研究吧)。
我的机子上装了JDK1.5.0_04,因此我工程的将运行环境直接设置为本机的jre1.5.0_04环境,重新编译后就没有错误了。