메이븐 프로젝트에서 src/main/resource 에 xml파일을 넣고 서버를 띄울때 그 xml 파일을 읽어서
map으로 메모리에 올려놓고 쓰려고 했는데, src/main/resource의 파일의 경로가 무엇인지 몰라서 읽지 못하는 문제가 발생했다.

 

만약 파일이 아래와 같다면

 src/main/resources/textfiles/myfile.txt

 

아래의 경로로는 파일을 읽지 못한다.

"/main/resources/textfiles/myfile.txt"

or

"/resources/textfiles/myfile.txt" 

 

그런데 메이븐 클린 빌드를 하면 resources 아래의 파일과 폴더들이 myapp/target/classes 아래로 복사된다. 즉 아래의 경로에 파일이 복사된다.

myapp/target/classes/textfiles/myfile.txt 

 

그래서 이렇게 읽어서 쓰면 된다.

getClass().getResource("/textfiles/myfile.txt")

 

내 경우는 xml파일을 그냥 src/main/resource 에 넣어놨기 때문에 그냥 이렇게 읽어서 썼다.

getXmlDocument("/myxml.xml")


DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder documentBuilder  = factory.newDocumentBuilder();

 

InputStream is = this.getClass().getClassLoader().getResourceAsStream("myXml.xml");

 

Document document = documentBuilder.parse(is); // good! 이렇게 해서 document 를 얻는다.

 


출처 - http://devx.tistory.com/entry/maven%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-srcmainresource%EA%B2%BD%EB%A1%9C%EC%9D%98-%ED%8C%8C%EC%9D%BC-%EC%9D%BD%EA%B8%B0








Posted by linuxism
,