0

ここに私のmaven構造があります:

project
  ---src
    ----main
        ----java
            ----App.java
        ----resources
            ----config.properties

config.properties を読み取るコードは次のとおりです。

private static final URL propFile = ClassLoader.getSystemResource("config.properties");

public App() throws IOException {
    props.load(new FileInputStream(propFile.getFile()));
}

public static void main(String[] args) {
    try {
        App app = new App();
        //Something interesting happens here
    } catch (IOException e) {
        e.printStackTrace();
    }
}

を実行するjava -jar MyApp-1.0.jarと、次のメッセージが表示されFileNotFoundExceptionます。

java.io.FileNotFoundException: file:/home/dragon/JavaProjects/MyApp/target/MyApp-1.0.jar!/config.properties (そのようなファイルまたはディレクトリはありません)

それの何が問題なのですか?

4

2 に答える 2

1

これらのいずれかが正常に動作するはずです。

Properties props = new Properties();
props.load(Thread.currentThread().getContextClassLoader()
        .getResourceAsStream("config.properties"));
// OR
props.load(ClassLoader.getSystemResourceAsStream("config.properties");

あなたの例では、JAR アーカイブに埋め込まれたファイルに を介してアクセスしようとしてFileInputStreamいますが、これは直接行うことはできません。

于 2013-04-03T15:20:43.057 に答える
1

Java フォルダーに、App.java とリソース カタログを配置する必要があります。次に、次のコードを使用してプロパティ ファイルを取得できます。

private static final URL propFile = getClass().getResourceAsStream("resources/config.properties");

public App() throws IOException {
    props.load(new FileInputStream(propFile.getFile()));
}

したがって、プロジェクト構造は次のようになります。

project
  ---src
    ----main
        ----java
            ----App.java
            ----resources
                ----config.properties
于 2013-04-03T15:18:04.343 に答える