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