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

时间:2010-12-14 19:16:27

标签: java database jar h2

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

4 个答案:

答案 0 :(得分:3)

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

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

附录:这个小project包含JAR specification的链接和一个方便的实用程序,用于检查原地

答案 1 :(得分:3)

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

要嵌入所有依赖项,您可以编写类似的内容:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.4</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

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

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

答案 2 :(得分:2)

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

这也在this thread in the H2 forum中进行了讨论。

答案 3 :(得分:0)

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