2012-09-26 4 views
1

Netbeans, com.foo.bar 및 com.foo.baz에서 두 개의 Maven 프로젝트가 있습니다.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 

때, 넷빈즈, 나는이 프로젝트를 확장하려면 클릭 baz-> 종속성 -> 바 -> com.foo.bar, 내가 바/대상/클래스/COM/foo는/바 같은 내용을 참조하십시오. 모두 좋았어.

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")); 

같은 파일에 전체 경로를 추가해야합니다. 당신이 App 클래스에서 config.properties을로드하려면

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

당신은 이런 식으로 작업을 수행 할 수 있습니다

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()로 사용되는 클래스에 상대적입니다.

관련 문제