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?
risposta
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.
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.
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.
Se si vuole mettere il database di stesso nel file jar, quindi questa spiegazione potrebbe aiutare: http://www.h2database.com/html/features.html#database_in_zip
Questo è anche discusso in this thread in the H2 forum.
Come state creando questo JARfile? Stai usando uno strumento di compilazione come Maven, o semplicemente eseguendo 'jar' dalla riga di comando? – Anon
Io uso Eclipse. Esiste un'opzione per esportare in un file jar, quindi utilizzo questa opzione. – bancer
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