lggege 发表于 2013-1-29 23:39:30

Hsqldb的dump功能

从官网下的hsqldb.jar包是不包含dump功能的.

在HSQL Database Manager窗口(DatabaseManagerSwing)上选择菜单dump,会看到在cmd里面都是异常,提示Transfer类不存在.进入lib/hsqldb.jar查看,在org.hsqldb.util包下,的确是没有Transfer有关的类.

将hsqldb源代码导入Eclipse,发现,Transfer.java是有的.看来只能自己从源码导出一个jar,再使用dump功能了.

解决源码的依赖很容易,因为,hsqldb只对servlet.jar依赖,这个在lib文件夹下可以找到.

导出jar包后,发现,dump功能可以正常使用了.

dump功能是可以用了,回头去查hsqldb的代码
    static {      try {            Class.forName(DatabaseManagerSwing.class.getPackage().getName()                        + ".Transfer");            TT_AVAILABLE = true;      } catch (Throwable t) {            //System.err.println("Failed to get "            //+ DatabaseManagerSwing.class.getPackage().getName()            //+ ".Transfer: " + t);            // Enable this print statement for debugging class access problems.      }    }
哈哈,原来如此,在代码中先判断了在classpath下是否有Transfer这个类,有就将TT_AVAILABLE置为true.

相应的,为了实现兼容性,很多应用中都有类似的代码:
http://lggege.iteye.com/admin/blogs/163541
页: [1]
查看完整版本: Hsqldb的dump功能