이클립스에서 자바 Class 파일 배포하는 법 ~~
우선 이클립스에서 Project - Export - Java - Runnable JAR file 선택
Runnable JAR file 옵션
Launch configuration - 메인 클래스(직접 실행될 메인 클래스)
Export destination - JAR 파일 저장 경로 선택(Browse)
Library handling - 1. Extract required libraires into generated JAR (내부 라이브러리 포함 )
2. Packaage required libraires into generated JAR(외부 라이브러리 포함)
3. Copy required libraries into a sub-folder(라이브러리 다른 폴더에 복사)
WeatherAPI 프로젝트안에있는 Weartherb 클래스를 외부라이브러리까지 포함하여
C:\Users\HJW\ 경로안에 Wear3 파일명으로 Wear3.jar 파일을 만들겠다.
저는 2번을 선택하여 외부 라이브러리까지 JAR 파일로 만들었습니다.
사용 외부라이브러리 - json-simple-1.1.1 , postgresql jdbc, ojdbc7
C:\Users\HJW\ 경로안에 만들어진 Wear3.jar 파일
만들어진 JAR 파일을 다른 서버에 배포하기
저 같은 경우 다른 윈도우 운영체제에 톰캣을 설치하여 사용 중이라서 톰캣서버에 배포하였습니다.
JAR 배포순서 (클래스 파일) 참고만 하시길....
ex) Wear3.jar
1. JAR 파일을 서버에서 실행되는 classes 폴더에 복사(설치 경로 및 프로젝트 실행 경로마다 다름) 주의!
2. 복사 후 JAR 파일 컴파일 하기 java -> class 확장자로.(Command line 이용)
2-1. CMD 명령어로 명령 프롬프트 창이동
2-2. cd [jar파일 경로명] 입력 하면 JAR 파일이 설치된 경로로 접속되어있는 걸 볼 수 있음
Ex) C:\Users> - cd [JAR 파일 경로 입력] - C:\Users\JAR\classes>
2-3. jar -xvf Wear3.jar 명령어로 jar 파일 압축을 푼다.
2-4. javac(java) -jar [Wear3.jar] 명령어로 입력 시 컴파일이 된다.
-Wear3.jar 파일을 톰캣 Classes 파일에 옮긴 모습(jar 파일 압축 푼 상태)
현재 CMD 실행모습(가린부분은 이해해주세요)
[tar -xvf Wear3.jar 명령어로 jar 파일 압축을 푼 상태]
D 드라이브에 톰캣이 설치되어 있기에 D 드라이브로 우선 이동한 뒤,
cd 명령어로 JAR 파일 경로로 이동,
java -Dfile.encoding=UTF-8 -jar Wear3.jar 명령어로 jar파일 실행하면 위처럼 결과가 나옵니다
(한글 출력하기 위해 Dfile.encoding=UTF-8을 붙임)
JAR 파일을 컴파일 하면서 생긴 문제들
1 Wear.jar에 기본 Manifest 속성이 없습니다.
Manifest 속성을 찾지 못하는 에러
해결방안
- Manifest.txt 파일을 만든다.(jar파일 있는 폴더 경로 안에)
- Main-Class: test.Weartherb 라는 내용을 입력한다.
=> 위 내용은 패키지명[test].메인클래스 명[Weartherb]
즉 test 패키지 아래 Weartherb.java 클래스가 메인 클래스 이다. 라고 보시면 됩니다.
내용 입력 후 꼭 엔터 (줄 바꿈으로 끝나야만 제대로 파싱이 됨)
- jar -cfm Wear3.jar Manifest.txt Weartherb\*.class 명령어 입력
- javac -jar [Wear3.jar] 명령어로 입력 시 컴파일이 된다
2. java.lang.NoClassDefFoundError: org/json/simple/parser/JSONParser
JSON 라이브러리를 참조하지 못해 클래스를 찾기 못하는 에러
분명 위에서 외부 라이브러리까지 참조하여 JAR파일을 만들었음에도 불구하고
이러한 에러가 발생했다.
JAR 파일 압축을 풀게되면 외부 라이브러리도 같이 나오게 되는데 말이죠...
해결방안
- Java\jre\lib\ext에 외부 라이브러리를 복사하여 붙여넣기
톰캣서버 lib 밑에도 넣어보고, JAR를 여러번도 만들어 봤는데 해결이 되지않았다.
몇시간 동안 고생하다 lib\ext 에 라이브러리를 넣어보니 해결이 되었다..
다행이다...
classpath(경로)가 제일 중요하고 경로문제가 해결이 된 상태에서 위 에러가 발생하게 되면
위 해결방안과 같이 해보세요! 궁금한점은 댓글로
3. 컴파일시 JAR 파일 한글 깨짐 문제
해결방안
-Dfile.encoding=UTF-8 명령어를 붙이도록 한다.
java -Dfile.encoding=UTF-8 -jar Wear3.jar
이해 안되시면 댓글달아주세요!
'JAVA' 카테고리의 다른 글
자바를 이용한 PostgresqlDB 이미지 파일 삽입 및 출력 (0) | 2019.06.20 |
---|---|
자바 Timer 클래스를 사용하여 일정시간에 주기적인 작업하기 (1) | 2019.06.19 |
기상청 데이터 PostgresqlDB 연동하기)(DTO,DAO) (0) | 2019.06.18 |
[기상청 API] 종관기상관측 사용하기 (0) | 2019.06.14 |
[기상청 API] 동네예보정보조회 사용하기 (0) | 2019.06.13 |