2010-12-14 11 views
5

埋め込みモードでデスクトップアプリケーションにH2データベースを使用します。アプリケーションをjarファイルに圧縮すると、データベースファイルは省略されます。だから、私はMyApplication.jarを実行すると何も動作しません。 h2.jarファイルをMyApplication.jarに埋め込み/インクルード/接続する正しい方法は何ですか?または、バンドルにデータベースとアプリケーションを配信する別の方法がありますか?クライアントに配信されたjarファイルにH2データベースを埋め込む方法は?

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

補遺:

+0

このJARファイルをどのように作成していますか? Mavenなどのビルドツールを使用しているのか、単にコマンドラインから 'jar'を実行していますか? – Anon

+0

私はEclipseを使用しています。 jarファイルにエクスポートするオプションがあるので、私はそのオプションを使用します。 – bancer

+0

私はMavenを学ぶ時間を取ることをお勧めします:http://www.sonatype.com/books/mvnref-book/reference/public-book.html - 長期にわたって、その投資は何度も何度も返済されます。 – Anon

答えて

3

一つの一般的なスキームは、アプリケーションへのlibディレクトリに相対h2.jarを入れて、それのためのエントリを使用してJARのマニフェストでClass-Pathエントリを含めることであるこの小さなprojectはへのリンクを含んでいますJAR specificationとマニフェストin situを調べるための便利なユーティリティです。

+0

マニフェストファイルの構文を知るには、どのようなリソースが必要ですか? – bancer

+0

@bancer:私は上記で詳述しました。 – trashgod

0

プロジェクトをビルドするためにmavenを使用している場合は、maven-assembly-plugin(jar-with-dependencies)を見てください。これにより、すべての依存関係がパックされた単一のjarが生成されます。

3

プロジェクトをビルドするためにMavenを使用している場合は、maven-shade-plugin ...素晴らしい結果とコントロールを使用してください。私はたくさん使っています。アプリケーションのjarファイルに含ま

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

それからちょうど通常の「MVNパッケージ」をあなたは持っているだろう、すべての依存関係のjarファイル:あなたのような何かを書くと、すべての依存関係を埋め込むための

さらに設定することで、含まれるものと含まれないものを制御できます。あなたのjarファイルにデータベースそのものを入れたい場合は

関連する問題