如何将H2数据库嵌入到传递给客户端的jar文件中?

我在嵌入模式下使用H2数据库作为桌面应用程序。 当我将应用程序压缩到jar文件时,省略了数据库文件。 所以,当我运行MyApplication.jar时,没有任何作用。 使用MyApplication.jar嵌入/包含/连接h2.jar文件的正确方法是什么? 或者可能还有另一种方法可以在捆绑中提供数据库和应用程序?

一种常见的方案是将h2.jar放在相对于您的应用程序的lib目录中,并在JAR的清单中包含一个Class-Path条目,其中包含一个条目:

 Class-Path: lib/h2.jar lib/… 

附录:这个小项目包括JAR规范的链接和用于原位检查清单的便利实用程序。

如果你使用Maven来构建你的项目,只需使用maven-shade-plugin …很棒的结果和控制,我一直在使用它。

要嵌入所有依赖项,您可以编写如下内容:

   org.apache.maven.plugins maven-shade-plugin 1.4   package  shade     

然后只需一个普通的“mvn包”,您就可以将所有依赖项的jar包含在应用程序jar中。

通过进一步配置,您可以控制包含的内容和不包含的内容。

如果您想将数据库本身放在jar文件中,那么这个解释可能有所帮助: http : //www.h2database.com/html/features.html#database_in_zip

这也在H2论坛的这个主题中讨论过。

如果您正在使用maven构建项目,请查看maven-assembly-plugin(jar-with-dependencies)。 这将生成包含所有依赖项的单个jar。