5

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

4

4 回答 4

3

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

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

附录:这个小项目包括一个指向JAR 规范的链接和一个方便的实用程序,用于在原地检查清单。

于 2010-12-14T20:16:56.327 回答
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 中。

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

于 2010-12-14T21:05:07.820 回答
2

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

这也在H2 论坛的这个线程中进行了讨论

于 2010-12-14T21:10:35.793 回答
0

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

于 2010-12-14T20:57:46.927 回答