1

場所 conf/Config.properties にプロパティ ファイルを作成しました。このフォルダーは、Eclipse のプロジェクトのルート フォルダーの下にあります。これも.classpathに追加しました。

次のコードを使用して、このファイルからデータを読み取っています。

InputStream in = getClass().getResourceAsStream("conf/Config.properties");
Properties properties = new Properties();
properties.load(in);
String fromEmail = properties.getProperty("emailID");
System.out.println("from email is " + fromEmail);
String fromEmailPass = properties.getProperty("emailPass");
String host = properties.getProperty("host");

これによりエラーが発生します:

java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:418)
    at java.util.Properties.load0(Properties.java:337)
    at java.util.Properties.load(Properties.java:325)
    at com.sendum.integration.activities.notifications.ActivityImplSendActivationEmail.activateEmail(ActivityImplSendActivationEmail.java:23)

.properties ファイルからデータを読み取るにはどうすればよいですか?

4

6 に答える 6

5

getClass().getResourceAsStream("conf/Config.properties");クラスの場所に相対的なパスからリソースをロードしようとします。

次のいずれかを使用します。

  • getClass().getResourceAsStream("/conf/Config.properties");(先頭/が絶対パスであることに注意してください) または
  • getClass().getClassLoader().getResourceAsStream("conf/Config.properties");(ここでは絶対パスを使用していますが、先頭/は必要ありません)

編集:ディレクトリ構造とクラスパスが何であるか混乱しています。あなたのコメントにより、フォルダー構造が次のようになっていることがわかりました。

<Project folder>
   - src/
       // .java files
   - conf/
       Config.properties

confクラスパスに追加したと言っています。Eclipse に2 つのソース フォルダーがあることを理解しています。この場合、 と の両方srcconfルート パッケージであり、上記のコマンドを以下のように変更する必要があります。

  • getClass().getResourceAsStream("/Config.properties");また
  • getClass().getClassLoader().getResourceAsStream("Config.properties");
于 2013-08-16T19:20:17.163 に答える
3

getClass().getResourceAsStream("conf/Config.properties");nullを返しているようです。これは、現在ファイルが見つからないことを意味します。

を使ってみてくださいgetReasourceAsStream("./conf/Config.properties")。これは現在のディレクトリから始まるため相対パスであり、絶対パスを検索conf/Config.properties または使用してみてください。getReasourceAsStream("/Users/user/filepath/conf/Config.properties")

同様の投稿については、こちらを参照してください。

于 2013-08-16T19:13:37.320 に答える
0

試してみてください

getClass().getClassLoader().getResourceAsStream("conf/Config.properties");
于 2013-08-16T19:17:23.197 に答える
0

プロパティ ファイルからデータを取得するには、以下のコードを試してください。

Properties prop = new Properties();
InputStream input = null;

input = this.getClass().getClassLoader().getResourceAsStream("conf/Config.properties");

// load a properties file
prop.load(input);

String str = prop.getProperty("key");//like userName
于 2015-11-12T11:27:29.510 に答える