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

在您的 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 回答
1

这些中的任何一个都应该可以正常工作:

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

在您的示例中,您尝试通过 a 访问嵌入在 JAR 存档中的文件FileInputStream,而您无法直接执行此操作。

于 2013-04-03T15:20:43.057 回答