1

実行可能なjarファイルに変換するプロジェクトがあります。を使用して、一部の構成をiniファイルに保存していini4jます。

ディレクトリを設定するだけで機能しますgetConf = new Ini(new FileReader(path));が、使用すると機能しませんgetResourceAsStream()

public class IniReader {

// When I set it like that, it works..
private static String path = "../conf.ini";

public static String readIni(String val, String getOb, String fetchOb) {
    Ini getConf = null;

    try {
    // When I set it like that, it works..
        getConf = new Ini(new FileReader(path));

        // I want to use this version but I am getting null error.
        //getConf = new Ini(new BufferedReader(new InputStreamReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("conf.ini"))));

    } catch (InvalidFileFormatException e) {
        System.err.print("Error InvalidFileFormat : " + e.getMessage() + "\n");
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        System.err.print("Error FileNotFoundException : " + e.getMessage() + "\n");
        e.printStackTrace();
    } catch (IOException e) {
        System.err.print("Error IOException : " + e.getMessage() + "\n");
        e.printStackTrace();
    }
    return val = getConf.get(getOb).fetch(fetchOb);
}

iniFile を読み取ろうとすると、次のエラーが表示されます。

Exception in thread "main" java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:113)
    at org.ini4j.Ini.load(Ini.java:104)
    at org.ini4j.Ini.<init>(Ini.java:56)
    at com.test.ttf.IniReader.readIni(IniReader.java:28)
    at com.test.ttf.SlashSCR.InitProg(SlashSCR.java:116)
    at com.test.ttf.InitProg.main(InitProg.java:18)

これは私が.iniファイルを読みたい場所です

ここに画像の説明を入力

編集

次のことも試しました。

    Ini getConf= new Ini();
    getConf.load(Thread.currentThread().getContextClassLoader().getClass().getResourceAsStream("../conf.ini"));
4

1 に答える 1

1

getResource()jar から構成をロードする場合は、パスとgetResourceAsStream()関数を使用できます。は、リソースが見つからなかったことを示します (ほとんどのNullPointerException場合、1 行に多くのステートメントがあるとわかりにくいためです) (これは暗黙のうちに を返しますnull) 。

ローカルファイルからロードしたい場合は、元の方法で( を使用してFileReader)実行するだけです。ただし、実行ディレクトリ (実行元java) からの相対パスを設定する必要があります。これは、ほとんどの場合、jar と同じディレクトリです。その場合、"conf.ini"代わりに使用する必要があります"../conf.ini"

于 2015-02-09T13:38:35.370 に答える