欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hsqldb运行、源码导入eclipse和Intellij IDEA进行调试

程序员文章站 2022-04-26 17:09:29
...

预备知识

hsqldb是一个小型的关系型数据库,代码量小,适合作为java语言的数据库入门研读。
需要环境:

JAVA

推荐安装JAVA8. java的安装资料很多,随便列两个教程,如:
mac安装java
windows安装java

IDE(集成开发环境)

JAVA下较为常用的两种开发环境eclipse和Intellij IDEA,均支持linux、mac和windows系统。推荐eclipse(多线程打断点、调试会方便一点)。
eclipse,我尝试的版本是目前最新的Oxygen(4.7);
Intellij IDEA.

HSQLDB代码

hsqldb官网链接,版本2.4.0.

HSQLDB的命令行启动

hsqldb的启动非常简单,包括服务器启动和客户端启动。hsqldb官方下载包已经打好了jar包,服务器启动可以直接运行:

java -cp lib/hsqldb.jar org.hsqldb.server.Server

而客户端启动也可以简单的运行:

java -cp lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

windows系统的bat文件中其实也是这些命令。

HSQLDB在IDE中的导入和调试

研读代码,在IDE中断点调试很重要,我们介绍导入eclipse和intellij IDEA的方法。

导入eclipse

hsqldb本身不是用maven管理的,而是用gradle和ant,eclipse中需要在导入的时候选new project -> other ->Java Project From Existing Ant Buildfile,导入文件选择build/build.xml文件:

hsqldb运行、源码导入eclipse和Intellij IDEA进行调试

注意,ant本身包含的lib文件可能不全,因此,在成功导入eclipse之后会有错误:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试

通常遇到的错误有以下几种:
1. 找不到junit包,表现为org.hsqldb.test下面大量的错误;
2. org.hsqldb.persist.Crypto类报错;
3. org.hsqldb.util.preprocessor包下面的ant相关类报错;
4. org.hsqldb.server.Servlet报错

我打包了各种可能用到的包:hsqldb-lib
下载这些jar包之后放到hsqldb/lib目录下,然后将这些包加入eclipse的buildpath中:
1. 右键hsqldb项目 - build path - Configure Build Path - Libraries标签 - Add External JARS:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试
2. 选中hsqldb/lib下面的所有jar包,添加:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试
3. 点击Apply And Close,完成添加。所有的编译错误消除。
4. 注意,如果出现了其他错误,基本上都是某些jar包找不到,可以在网上直接搜索这些jar包下载。比如javax.xml.bind.util.JAXBResult找不到,可以搜一下javax.xml.bind.jar这样的关键词,然后可以在ww.java2s.com找到。

IDEA

idea可以直接open打开这个hsqldb项目,不过开始是不能运行的,需要将src->右键->mark directory as->sources root,标记了这个之后,相关类的右键中可以有run server了.
同样的,添加各个以上的几个lib的jar包到库中:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试
之后右键运行即可。

HSQLDB的调试

HSQLDB的客户端和服务器端通过JDBC传输数据,因此需要在两端分别打断点。
以eclipse为例。
启动运行,服务器运行org.hsqldb.server.Server.main函数即可。然后试着在如下地方打断点:

org.hsqldb.ClientConnection.execute(Result)

调试的方式启动客户端,注意模式选择Engine Server:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试

输入命令如:

create table branch(
branch_name char(15), branch_city char(30),assets numeric(16,2), primary key(branch_name));

停在客户端的这里:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试
继续运行,在server的org.hsqldb.Session.execute(Result)处打断点,停下来:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试
这里传入的cmd即刚才输入的命令,语句记在mainString字段中:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试
以上简单地陈列了客户端和服务器端的断点入口。

代码修改和导出

在以上两个断点出,大家已经发现我们添加了两行输出,分别将服务端和客户端接收到的SQL命令打出。这是作为代码修改的一个样例。

项目导出步骤如下:
1. 在hsqldb项目上右键-Export-选择Jar file格式:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试
2. 指定输出目录,然后finish
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试
3. 生成jar包。

重新运行,在命令行会看到做出的修改:
hsqldb运行、源码导入eclipse和Intellij IDEA进行调试

接下来可以开始其他的修改和尝试。