2010-12-14 10 views
5

Uso il database H2 per un'applicazione desktop in modalità incorporata. Quando comprimo l'applicazione nel file jar, il file di database viene omesso. Quindi, quando eseguo MyApplication.jar, niente funziona. Qual è il modo corretto di incorporare/includere/connettere il file h2.jar con MyApplication.jar? O forse c'è un altro modo per fornire database e applicazioni nel pacchetto?Come incorporare il database H2 nel file jar consegnato al client?

+0

Come state creando questo JARfile? Stai usando uno strumento di compilazione come Maven, o semplicemente eseguendo 'jar' dalla riga di comando? – Anon

+0

Io uso Eclipse. Esiste un'opzione per esportare in un file jar, quindi utilizzo questa opzione. – bancer

+0

Mi raccomando di dedicare del tempo per imparare Maven: http://www.sonatype.com/books/mvnref-book/reference/public-book.html - a lungo termine, quell'investimento si ripagherà molte volte. – Anon

risposta

3

Uno schema comune è quello di mettere h2.jar in un lib directory relativa alla propria applicazione e includere una voce Class-Path nel manifesto del vaso con una voce per esso:

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

Addendum: Questo piccolo project include un collegamento a il JAR specification e una comoda utility per l'esame del manifest in loco.

+0

Qual è una buona risorsa per imparare la sintassi del file manifest? – bancer

+0

@bancer: ho elaborato sopra. – trashgod

0

Se stai usando maven per costruire il tuo progetto dai uno sguardo a maven-assembly-plugin (jar-with-dependencies). Ciò produrrebbe un singolo vaso con tutte le dipendenze impacchettate in esso.

3

Se stai usando Maven per costruire il tuo progetto, usa solo maven-shade-plugin ... ottimi risultati e controllo, l'ho usato molto.

Per l'incasso tutte le dipendenze si potrebbe scrivere qualcosa di simile:

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

Poi, con solo un normale "pacchetto mvn" avrete tutti vasetti le dipendenze inclusi nel vostro vaso di applicazione.

Con un'ulteriore configurazione è possibile controllare cosa viene incluso e cosa no.

Problemi correlati