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 nothing works. What is the correct way to embed/include/connect h2.jar file with MyApplication.jar? Or maybe there is another way to deliver database and application in the bundle?
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 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With