2

ソースコードや使用データベースを提供せずに配布したいプログラムがあります。これは sqlite データベースであり、更新する必要はありません。eclipse fatjar を使用して、jar を探す場所を変更しようとしましたが、プログラムを実行すると、jar と同じディレクトリに空のデータベース ファイルが作成されます。配布できるファイルが 1 つだけ必要です。


関連すると思われるコメントから:

..TXT ファイルでテストした後に XML を含めます。

そうしたいと思いますが、このデータベースは 80,000 行の長さで、4 つの列があります。実行時ではなく、プログラムの更新により、サイズも大きくなるだけです。

サーバーに配置し、Web インターフェイスを備えています。

インターネット接続の使用は本当に避けたいです。誰かがjarを逆コンパイルしたい場合、私は気にしません。ダブルクリックで機能するようにしたいだけで、余分なファイルが配置されないようにします。

4

3 に答える 3

2

(展開) ..私にとって使いやすさときれいさは重要です

これに本当に必要なのはクロスプラットフォームのインストーラーだと思います。ユーザーは 1 つのファイルを取得してダブルクリックし、「プロンプトに従います」(プロンプトが必要な場合) & アプリを抽出します。使用する準備ができて。

複数のファイルが作成される可能性がありますが、これはエンド ユーザーにはほとんど見えません。「アウト・オブ・サイトは気が狂っている」。

インターネット接続の使用を避けたい..

考え直すことをお勧めします。アプリのサイズ。いつJar'dに来ますか?数メガバイト?それは、インターネットトラフィックのこの時代には何もありません. 2分間のYouTubeです。

ソフトウェアをロードするための CD/DVD ドライブなどを備えたマシンに対する、インターネット接続を備えたデバイスの比率も変化しています。J2SE を実行できるマシンの数が、ドライブの数よりも多くのマシンでインターネットに接続される時代が近づいています。J2SE を実行できるデスクトップ PC とネットブックを持っています。両方ともインターネットに接続されていますが、デスクトップ PC だけが CD/DVD ドライブを備えています。

その場合 (要点を言えば)、Java Web Startを参照してアプリをデプロイしてください。そしてDB。非常にユーザーフレンドリーで、デスクトップとの統合も良好です。

約 50MB ですが、問題は、すべてのエンド ユーザーが常にインターネットにアクセスできるわけではないということです。アプリケーションの配布はインターネット経由で行うことができますが、データベースへのアクセスやアプリケーションのロードをすべてインターネットに依存したくありません。

それは必要ありません。JWS はアプリケーション リソースをローカルにキャッシュします。サーバーで更新された Jarチェックしますが、その時点でインターネット接続がない場合でも、キャッシュされたコピーからの起動を許可するように構成できます。構成する起動ファイル要素は次のようになります。

<update check="always" policy="prompt-run"> 
于 2012-06-13T22:14:39.033 に答える
1

SQLiteデータベースでこれを実行できるかどうかはわかりませんが、Derbyはjarをサポートしています:パス:http ://db.apache.org/derby/docs/dev/devguide/cdevdvlp17453.html

または、起動時にjarからファイルシステムにデータベースを抽出し、そこをポイントします。

于 2012-06-13T22:03:08.210 に答える
1

次のことができると思います。

  • データベースをクラスパスにパッケージ化します。
  • アプリが読み込まれたら、データベースを一時ディレクトリ (/tmp など) にコピーします。
  • そこから読み取るようにsqliteに指示します(jdbc URLを設定することにより)
  • アプリが閉じられたときにファイルを削除する jvm フックを追加します。

それは魅力のように機能するはずです。

ヒント:

getClass().getResourceAsStream();クラスパス上のファイルの参照を取得するために使用します。

于 2012-06-13T22:26:32.033 に答える