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