2012-09-26 109 views
1

我在NetBeans中有兩個Maven項目,com.foo.bar和com.foo.baz。Maven依賴找不到它的資源

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->酒吧,> com.foo.bar,我看到相同的內容,酒吧/目標/班/ COM /富/酒吧。我認爲所有的都很好。

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

嘗試使用getClass()。getResourceAsStream(「com/foo/bar/config.prioperties」) –

回答

0

你需要如果您放置在文件中的資源裏面的根文件夾整個路徑添加到文件中,像這樣

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

,它會不帶路徑的工作。

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

如果你想從App類加載config.properties那麼你可以做這樣的:

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.properties相對於所使用getResourceAsStream()類。