1

class.getResourceAsStream(props.properties) を使用してプロパティ ファイルをロードするクラスがあります。プロパティ ファイルはクラス自体と同じパッケージにありますが、オブジェクトではなく null を返すようになりました。これは元のコンピューターでは問題なく動作しますが、別のコンピューターでは失敗するため、困惑しています。ディレクトリ構造全体を古いものから新しいものにコピーしました。両方のコンピューターで Netbeans 7.2.1 を使用しています。クラスパスの設定か何かに違いないと確信していますが、2つの環境の違いはまったく見つかりません。サンプルコードは次のとおりです。

package Cab;
import java.util.*;
import java.lang.reflect.*;
import java.io.*;

public class CabTest{

    public static void main(String[] args)
    {
        Properties  l_Prop = new Properties();
        InputStream l_IS;
        try
        {
           l_IS = CabTest.class.getResourceAsStream("props.properties");
           l_Prop.load(l_IS);
        }
        catch(IOException l_Exc)
        {
            System.out.println(l_Exc);
        }
    }
}
4

2 に答える 2

2

これは本当にある環境で機能し、別の環境では機能しませんか? これ以来、それは正しく見えません

l_IS = Class.class.getResourceAsStream("props.properties");

特定のクラスに関連するストリームに解決されません。試す:

l_IS = CabTest.class.getResourceAsStream("props.properties");
于 2012-12-10T17:11:29.880 に答える
0

これは、.classファイルがパッケージ "foo.bar.baz.props.properties"にある場合、それがクラスローダーに指定する必要があるパスであることを示しています。

l_IS = this.getClass().getResourceAsStream("foo/bar/baz/props.properties");

あなたの方法は、それがCLASSPATHのルートにある場合にのみ機能します。

于 2012-12-10T17:15:33.683 に答える