1

変数 'file_Base_Path' を持つアプリケーションがあり、propertyFile (sample.properties など) からその値を読み取っています。変数の値を user.home に設定したいのですが、 ${user.home}が機能していません。Linux と Windows の両方で機能するように値を user.home に設定する方法。

注: System.getProperties('user.home') は使用できません。値が常に user.home であるとは限らないため、異なる場合があります

サンプルのプロパティ:

    file_Base_Path=${user.home}

値の設定方法:

  properties.getProperty("file_Base_Path")  //i'm expecting '/home/user' but it is returning '${user.home}'

ありがとう

4

3 に答える 3

0

プロパティファイルは環境変数の置換を行いません。

環境変数を取得する方法は次のとおりです。

System.getProperties("variablename");

"variablename"がそれ自体で変数である場合は、プロパティを介して構成してみませんか?

sample.properties:

userhome.variable.name=user.home

Javaコード:

String userhomeVariableName = properties.getProperty("userhome.variable.name");
String userhome = System.getProperties(userhomeVariableName);
于 2013-02-27T10:04:20.910 に答える
0

なぜあなたはこれをしないのですか:

 String localHome=properties.getProperty("file_Base_Path");
 if(localHome.equals("${user.home}"){
      localHome=System.getProperties("user.home");
 }
于 2013-02-27T10:05:17.940 に答える
0

Spring を使用する場合、@Valueアノテーションは${user.home}注入時に適切な値に変換されます。

sample.properties をそのままにして、クラスで使用します。

@Value("${file_Base_Path}")
private String filePath;

また、${user.home}変数は、変数に注入される前に Spring によって変換されます。

詳細については、を参照してください。

または、ここで説明されているように Apache Commons Configuration を使用します

Spring または Apache Commons Configuration を使用したくない場合は、Properties として独自のソリューションを展開する必要があり、System.getProperties はプロパティ ファイルの内容を変換しません。次のことを行う必要があります。

  1. 文字列に「${」が含まれているかどうかを確認します (ユーザーが「C:/temp」などのフル パスを指定する場合、変換は必要ありません)。
  2. プロパティのコンテンツを抽出します。
  3. System.getProperty(String) を使用して実際の値を取得します。
  4. 見つかった位置の文字列に値を追加します(たとえば、次のようなfile_Base_Path=${user.home}/resources/${java.version}場合)。
于 2015-04-30T15:33:13.823 に答える