2010-12-14 89 views
5

J'utilise la base de données H2 pour une application de bureau en mode intégré. Lorsque je compresse l'application dans le fichier jar, le fichier de base de données est omis. Ainsi, quand je cours MyApplication.jar rien ne fonctionne. Quelle est la bonne façon d'incorporer/inclure/connecter le fichier h2.jar avec MyApplication.jar? Ou peut-être existe-t-il une autre façon de fournir la base de données et l'application dans le bundle?Comment intégrer la base de données H2 dans un fichier jar remis au client?

+0

Comment créez-vous ce fichier JAR? Utilisez-vous un outil de construction tel que Maven ou simplement lancez jar depuis la ligne de commande? – Anon

+0

J'utilise Eclipse. Il y a une option pour exporter dans le fichier jar, donc j'utilise cette option. – bancer

+0

Je recommande de prendre le temps d'apprendre Maven: http://www.sonatype.com/books/mvnref-book/reference/public-book.html - à long terme, cet investissement va se rembourser plusieurs fois. – Anon

Répondre

3

Un projet commun est de mettre h2.jar dans un parent de répertoire lib à votre application et inclure une entrée Class-Path dans votre manifeste JAR avec une entrée pour elle:

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

Addendum: Ce petit project comprend un lien vers le JAR specification et un utilitaire pratique pour examiner le manifeste in situ.

+0

Quelle est une bonne ressource pour apprendre la syntaxe du fichier manifeste? – bancer

+0

@bancer: J'ai élaboré ci-dessus. – trashgod

0

Si vous utilisez maven pour créer votre projet, regardez maven-assembly-plugin (jar-with-dependencies). Cela produirait un pot unique contenant toutes les dépendances.

3

Si vous utilisez Maven pour construire votre projet, utilisez simplement maven-shade-plugin ... d'excellents résultats et un bon contrôle, je l'ai beaucoup utilisé.

Pour intégrer toutes vos dépendances vous écrire quelque chose comme:

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

Alors avec juste un « mvn package » normal, vous aurez tous les pots vos dépendances incluses dans votre pot d'application.

Avec une configuration supplémentaire, vous pouvez contrôler ce qui est inclus et ce qui ne l'est pas.