使用测试应用程序计算生产应用程序和hsqldb的问题。HSQLDB - 适用于外部Jar - 不适用于JRE
如果我在eclipse中使用hsqldb.jar文件作为外部jar编译测试应用程序,该程序就可以工作。但是,如果我的JRE系统库中只有jar文件,我会得到一个9.0之前的客户端,试图从数据库连接错误。
这两个文件是完全相同的文件。唯一的区别是一个被添加为外部jar,另一个只是在类路径中。当生产应用程序构建时,它对同一个文件使用classpath并生成相同的9.0之前的错误。
使用测试应用程序计算生产应用程序和hsqldb的问题。HSQLDB - 适用于外部Jar - 不适用于JRE
如果我在eclipse中使用hsqldb.jar文件作为外部jar编译测试应用程序,该程序就可以工作。但是,如果我的JRE系统库中只有jar文件,我会得到一个9.0之前的客户端,试图从数据库连接错误。
这两个文件是完全相同的文件。唯一的区别是一个被添加为外部jar,另一个只是在类路径中。当生产应用程序构建时,它对同一个文件使用classpath并生成相同的9.0之前的错误。
你想使用的jar是一个HSQLDB 2.0版jar。还有第二个HSQLDB jar版本是1.8,并且在你想要的jar之前的类路径中。
这是一个类路径问题。您应该能够通过使用java -verbose或其他调试选项来查找第二个jar(1.8)的位置以及它如何进入类路径。
[添加]在应用程序中调试此应用程序的附加步骤是在连接到数据库之前打印出org.hsqldb.persist.HsqlDatabaseProperties.THIS_FULL_VERSION字段的值。这将打印用作客户端的jar版本。成功的连接意味着客户端和服务器罐子是相同的版本。
服务器实例在启动时将其版本打印到控制台。
我还建议从http://hsqldb.org/support/页面使用HSQLDB的最新快照jar。
通过将hsqldb.jar移动到第一个在classpath中声明来解决问题。
这是有道理的,如果是这样的话。可执行JAR文件正在仅存在2.0的计算机上创建。当JAR在Linux VM上运行时,我得到错误,除非在eclipse中将hsqldb.jar添加为外部JAR。 – Trevor 2010-10-05 13:11:24
当我在Linux上构建解决方案时,在类路径中指定hsqldb.jar文件时,会出现相同的9.0之前的错误。我仍然在解决这个问题,并且会尝试在没有我加载的hsqldb.jar文件的情况下进行测试。 – Trevor 2010-10-05 13:13:45
看起来不错,可能是这种情况。从系统中删除了2.0,应用程序仍然有效,并且具有相同的错误。 – Trevor 2010-10-05 13:29:57