I use H2 database for a desktop application in embedded mode. When I compress the application into jar file the database file is omitted. So, when I run MyApplication.jar no
One common scheme is to put h2.jar
in a lib
directory relative to your application and include a Class-Path
entry in your JAR's manifest with an entry for it:
Class-Path: lib/h2.jar lib/…
Addendum: This small project includes a link to the JAR specification and a handy utility for examining the manifest in situ.
If you're using maven to build you project take a look maven-assembly-plugin (jar-with-dependencies). This would produce single jar with all dependencies packed into it.
If you want to put the database itself in your jar file, then this explanation might help: http://www.h2database.com/html/features.html#database_in_zip
This is also discussed in this thread in the H2 forum.
If you are using Maven to build your project, just use maven-shade-plugin... great results and control, I've been using it a lot.
For embedding all your dependencies you would write something like:
<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>
Then with just a normal "mvn package" you'll have all your dependencies' jars included in your application jar.
With further configuration you can control what gets included and what not.