티스토리 뷰

기존 이클립스 프로젝트에 jar 파일을 추가하는 방법에 대해 적어본다. 요새는 maven을 기본적으로 사용하다보니 간편하게 jar 파일을 xml 로 관리만 해주면 된다. 하지만 maven 에 검색이 안되는 jar 파일인 경우나 직접 만든 jar 파일이라면 따로 관리를 해야 할 때도 있다. 그 해결방법으로는 프로젝트의 외부 jar 로 인식하여 절대경로로 jar 파일을 참조하는 경우와 프로젝트 내부에 jar 파일을 복사해서 넣어놓고 상대경로로 참조하는 경우이다.

 

보통은 [Add External JARs...] 버튼을 이용해서 추가하시는 방법을 사용하고 있는 것으로 안다. 그 말은 특정 jar 가 기본적으로 같은 위치에 있을 거라 예상될 때, 절대경로로 참조해야 한다. 안그러면 다른사람이 프로젝트를 받아 환경을 셋팅할 때 참조오류가 나기 일수이다.

 

우선 여기서 사용할 예제 jar 는 ms-sql 접속하기위해 필요한 jdbc 파일이며, sqljdbc4.jar 파일이다. jar 파일을 추가할 수 있는 Configure Build Path... 창을 띄운다.

 

 

 

Add External JARs...


[Add External JARs...] 버튼은 프로젝트 외부에 있는 jar 파일을 추가할 때 쓰는 버튼이다. 버튼을 눌러서 현재 저장되어있는 위치로 찾아가 선택해서 추가만 하면된다. 추가 하고 나면 절대경로로 참조하는 것을 볼 수 있다.

 

 

절대경로로 참조하면 지금 여기환경에서는 전혀 문제가 없으나, 이 프로젝트를 다른 컴퓨터에 셋팅할 때 어떻게 될까. 그림에 보듯이 D:\70_lib\Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\kor 저위치에 정확하게 sqljdbc4.jar 가 존재하지 않으면 참조오류가 난다. 해당 jar 파일을 찾을 수 없으니 관련 소스파일 또한 빨간줄로 오류 표시가 날것이다. 이같은 jar 파일은 사용자가 다운받아서 어디서 가지고 있을지 아무도 모르는 jar 이므로 흔히 참조오류가 날 수 있다.

 

.classpath 파일만 봐도 다음과 같이 절대경로로 추가된다.

<?xml version="1.0" encoding="UTF-8"?> <classpath> 	<classpathentry kind="src" path="src/main/resources"/> 	<classpathentry kind="src" path="src/main/java"/> 	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/> 	<classpathentry kind="src" path="src/test/resources"/> 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/> 	<classpathentry kind="lib" path="D:/..(중략)../sqljdbc_3.0/kor/sqljdbc4.jar"/> 	<classpathentry kind="output" path="target/classes"/> </classpath> 

 

 

Add JARs...

절대경로에 대한 단점을 보안하려고 보통 하는 짓이 프로젝트 내에 lib 폴더를 하나 생성해놓고 거기다가 jar 파일을 복사해 붙여넣고 상대경로로 인식하는 것이다. 프로젝트 맨 바깥에 폴더를 만든다. 이름은 "lib"로 하겠다.

 

 

 

그 폴더에 파일을 복사해 붙여넣으면 아래의 그림같이 나온다.

 

 

 

아직은 jar 파일이 프로젝트 안에 있는 것 뿐이지 아직 참조되고 있는 것이 아니다. 상대경로로 참조해보자.
Configure Build Path 팝업 창에서 [Add JARs...] 버튼을 누른다. 위와 같이 팝업이 뜨며, 프로젝트 안에 만든 lib 폴더안의 sqljdbc.jar 를 선택하고 ok 한다.

 

 

finance-spring/lib 로 보이듯이 상대경로로 참조되고 있음을 볼 수 있다. 이거의 단점이라면.. 프로젝트에 jar 파일을 복사해 넣으니 프로젝트 용량이 커진다는 단점이 있지만 상대경로로 하니 참조설정 때문에 다른 컴퓨터에 셋팅할 때 프로젝트안의 소스가 오류날 일이 없다.

.classpath 파일은 아래와 같이 변했다. 대세인 maven 은 기본이겠고, 부수적인 jar 를 관리할 일이 있다면 둘중에 상황에 맞게 사용하면 된다.

<?xml version="1.0" encoding="UTF-8"?> <classpath> 	<classpathentry kind="src" path="src/main/resources"/> 	<classpathentry kind="src" path="src/main/java"/> 	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/> 	<classpathentry kind="src" path="src/test/resources"/> 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/> 	<classpathentry kind="lib" path="lib/sqljdbc4.jar"/> 	<classpathentry kind="output" path="target/classes"/> </classpath> 
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함