Maven依赖无法找到其资源

时间:2012-09-26 18:37:43

标签: maven dependencies classpath

我在Netbeans中有两个Maven项目,com.foo.bar和com.foo.baz。

com.foo.bar是com.foo.baz的依赖项。

bar
+-src
| +-main
|   +-java
|   | +-com
|   |   +-foo
|   |     +-bar
|   |       +-App.java
|   +-resources
|     +-com
|       +-foo
|         +-bar
|           +-config.properties
+-target
| +-classes
|   +-com
|     +-foo
|       +-bar
|         +-App.class
|         +-config.properties
+-pom.xml

在Netbeans中,我点击展开项目baz-> dependencies-> bar-> com.foo.bar,我看到与bar / target / classes / com / foo / bar相同的内容。一切都很好,我想。

com.foo.bar有行

// print current directory
System.out.println(new File(".").getAbsolutePath());

// load config files
Properties conf = new Properties();
conf.load(new FileInputStream(config.properties));

com.foo.baz类似,但在resources/中没有任何内容。当我构建依赖项com.foo.bar和com.foo.baz然后运行com.foo.baz时,我得到了

/home/user/NetBeansProjects/baz/.
java.io.FileNotFoundException: config.properties (No such file or directory)

这是类路径的问题,还是什么? Maven不应该处理这个吗?

2 个答案:

答案 0 :(得分:1)

如果您想从config.properties课程加载App,那么您可以这样做:

public class App {

    public void someMethod() {
        InputStream is = getClass().getResourceAsStream("config.properties");
        Properties properties = new Properties();
        try {
            properties.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("foo = " + properties.getProperty("foo"));
    }

    public static void main(String[] args) {
        App app = new App();
        app.someMethod();
    }
}

config.propertiesgetResourceAsStream()使用的类相关。

答案 1 :(得分:0)

您需要将整个路径添加到文件中,如此

conf.load(new FileInputStream("com/foo/bar/config.properties"));

如果您将文件放在资源中的根文件夹中,那么它将在没有路径的情况下工作。

bar
+-src
| +-main
|   +-java
|   | +-com
|   |   +-foo
|   |     +-bar
|   |       +-App.java
|   +-resources
|       +-config.properties
(...)