3

少なくとも Windows、Linux、Mac OS、および Android にデプロイされる Java ソリューションを作成する際に、システム全体の構成データを保持する方法を探しています。

アプリのconfデータをJavaに保存する適切な方法は何ですか? ソリューションは、特定のユーザーのホーム ディレクトリを中心に説明されています。Oracleのドキュメントページの1つで:

http://docs.oracle.com/javase/7/docs/technotes/guides/deployment/deployment-guide/properties.html

同様のアプローチが取られます。

よりシステム全体のルートに進みたいと考えています。たとえば、Linux システムでは、/etc または /var/lib のサブディレクトリが適切な場所です。Windows では /$WIN/System32 が開始点である可能性があり、Mac OS では /System/Library が場所である可能性があります。

JAVA_HOME - オプションかもしれませんが、独自の問題があります: Windows は JAVA_HOME を無視します: JDK をデフォルトとして設定するには?

java.util.Preference クラスはしばらく前から存在しますが、id は BackingStore の場所の適切な選択を提供しません: http://www.allaboutbalance.com/articles/disableprefs/

を可能にするライブラリは何でしょうか

  • 適切なシステム全体のディレクトリを見つける
  • アプリケーション固有のサブフォルダーを追加する
  • プロパティを処理することもできます (これは、通常のプロパティ ファイルまたは java.util.Preferences で実行できます)。

質問の最初の部分は、プラットフォームに依存しないアプローチにおける適切な場所についてです。Android などでは、どのディレクトリを使用する必要がありますか? また、今後どのような問題を処理する必要がありますか (アクセス権など)? ライブラリが存在する場合、質問の最初の部分は、ライブラリが質問のこの部分を処理する方法によって回答されると想定されます。したがって、そのようなライブラリがないと思われる場合は、質問のこの部分に回答してください。

4

1 に答える 1

0

http://www.java-tutorial.ch/core-java-tutorial/java-osname-system-propertyのアプローチ は、これまでに見つけた最も近いものです。

String osName = System.getProperty("osName", null);
OperatingSystem  operatingSystem = OperatingSystem.resolve(osName);
OperatingSystemFamily family = operatingSystem.getFamily();
switch (family) {
  case UNIX:
    setBinFolder(DEFAULT_UNIX_BIN);
    setConfFolder(DEFAULT_UNIX_CONF);
    setDataFolder(DEFAULT_UNIX_DATA);
  break;
  case WINDOWS:
    setBinFolder(DEFAULT_WINDOWS_BIN);
    setConfFolder(DEFAULT_WINDOWS_CONF);
    setDataFolder(DEFAULT_WINDOWS_DATA);
  break;
  case MACOS:
    setBinFolder(DEFAULT_MACOS_BIN);
    setConfFolder(DEFAULT_MACOS_CONF);
    setDataFolder(DEFAULT_MACOS_DATA);
   break;
  default:
    setBinFolder(USER_HOME+"/bin");
    setConfFolder(USER_HOME+"/conf");
    setDataFolder(USER_HOME+"/data");                   
  break;
}

ただし、問題の一部を解決して OS を識別し、それに応じて対応するだけです。これに基づいて質問に答えてください。

于 2013-04-23T06:07:04.090 に答える