4

クロスプラットフォームで実行可能なアプリケーションがあるとしましょう

このアプリケーションは、外部ファイルにいくつかのデータと設定を作成し、読み書きします

バンドル階層は次のとおりです。

ApplicationFolder/application.jar
ApplicationFolder/database.odb
ApplicationFolder/config.xml

Mac、Windows、Linux のいずれであっても、アプリケーションはすべてが自分の隣にあることを認識しています (例: /database.odb または /config.xml)。


JavaFx 2 が提供する自己完結型アプリケーション機能が登場

アプリケーションは、Windows では .exe、Mac では .app に埋め込まれており、Linux についてはまだわかりません...

Mac ユーザーとして Mac でテストしたところ、database.odb と config.xml がユーザーのルート パスに作成されていることがわかりました。

したがって、オペレーティングシステムに関するアプリケーションの設定を保存/読み取るためのクロスプラットフォームメカニズムを考える必要があることに同意します

しかし、私は何をすべきか、どのようにそれを行うべきかよくわかりません(グーグルのヘルプも見つかりません..)


Windowsでは、.exeはフォルダーにインストールされるので、同じ動作を維持できると思います

Mac では、.app はフォルダーであり、すべてを内部に保持する必要があります (.app パスを取得する方法は?!)

Java/JavaFx に組み込みのメカニズムはありませんか?


コメント、アドバイス、ドキュメントなど、私に提供できるものをありがとう

バディシ

4

1 に答える 1

2

これを行うには多くの方法があります。ここでは、それらのいくつかを順不同でリストしました。推奨されるアプローチは、保存されるデータの種類によって異なります。

Java は、アプリケーションの設定を維持するため のいくつかのメカニズム (プロパティAPI や設定API など) を提供します。

アプリケーションがデータベースの恩恵を受けるほど洗練されている場合は、独自の構成メカニズムを持つ Java EE または Spring を使用することをお勧めします。

読み取り専用構成の場合、関連ファイルをアプリケーション jar 内にバンドルできます。

カスタマイズされたアプリケーション構成ファイルまたはクライアント アプリケーション全体のデータベースをアプリケーション jar に相対的に格納するには、実行時に必要なファイルを書き込みます。現在実行中のjarファイルがあるディレクトリを取得するにはどうすればよいですか? を参照してください。.

ユーザー固有の構成では、 を使用してユーザーのホーム ディレクトリを取得し、標準のファイル ディレクトリ リストに表示されないように、非表示のファイル属性を使用しSystem.getProperty("user.home")て設定ストレージ (たとえば ) のサブディレクトリを作成します。"{$user.dir}/.myapp"

アプリがインターネット接続に依存している場合、この情報の一部をクライアントではなくサーバー側に保存し、インターネット プロトコルを使用してクライアントからそれを利用できます。このアプローチの利点は、ユーザー構成とデータがクライアント マシン間で自動的に移植されることです。

于 2013-01-10T19:05:19.157 に答える