2010-12-14 14 views
5

Uso la base de datos H2 para una aplicación de escritorio en modo incrustado. Cuando comprime la aplicación en el archivo jar, el archivo de la base de datos se omite. Entonces, cuando ejecuto MyApplication.jar, nada funciona. ¿Cuál es la forma correcta de insertar/incluir/conectar el archivo h2.jar con MyApplication.jar? ¿O tal vez hay otra forma de entregar la base de datos y la aplicación en el paquete?¿Cómo incrustar la base de datos H2 en el archivo jar entregado al cliente?

+0

¿Cómo está creando este archivo JAR? ¿Estás usando una herramienta de compilación como Maven, o simplemente ejecutando 'jar' desde la línea de comandos? – Anon

+0

Uso Eclipse. Hay una opción para exportar al archivo jar, entonces uso esa opción. – bancer

+0

Recomiendo tomar el tiempo para aprender Maven: http://www.sonatype.com/books/mvnref-book/reference/public-book.html - a largo plazo, esa inversión se amortizará muchas veces. – Anon

Respuesta

3

Un esquema común es poner h2.jar en un lib directorio relativo a su aplicación e incluir una entrada Class-Path en el manifiesto de su JAR con una entrada para ella:

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

Adición: Este pequeño project incluye un enlace a el JAR specification y una práctica utilidad para examinar el manifiesto in situ.

+0

¿Cuál es un buen recurso para aprender la sintaxis del archivo de manifiesto? – bancer

+0

@bancer: He elaborado más arriba. – trashgod

0

Si está utilizando maven para construir su proyecto, eche un vistazo maven-assembly-plugin (jar-with-dependence). Esto produciría un solo contenedor con todas las dependencias empaquetadas en él.

3

Si está utilizando Maven para construir su proyecto, simplemente use maven-shade-plugin ... buenos resultados y control, lo he estado usando mucho.

para incrustar todas sus dependencias que iba a escribir algo como:

<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> 

Luego, con sólo un "mvn package" normal tendrá todas sus dependencias tarros incluidos en su frasco de aplicación.

Con la configuración adicional puede controlar qué se incluye y qué no.

Cuestiones relacionadas