티스토리 뷰
[JAVA] 외부 library(jar 파일) import 하여 JAVA 프로그램 실행시키기
엄청난 삽질과 결과를 얻었다.. TSTORY 블로그를 전전하며 여러 정보를 얻었지만... 모두 제대로 실행되지 않았고.. 아래와 같은 오류만 발생했다 ㅠ,.ㅠ.... 답은 의외로 간단했다.. Class를 구성할 때 -cp 옵션을 주엇던 것처럼 Java를 실행할때도 역시 -cp 옵션을 주면 된다..(!!환경변수에 외부 library를 추가하지 않았을 경우에)
OS :
#cat /etc/issue Ubuntu 16.04.1 LTS \n \l |
JAVA 설치 :
#sudo apt-get -y install java |
JAVA 버젼 확인 :
#java -version java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode) |
guki@guki-desktop:~/program/ConfigBackup$ ll 합계 68K drwxrwxr-x 3 guki guki 4.0K 12월 13 07:41 ./ drwxrwxr-x 5 guki guki 4.0K 12월 11 18:43 ../ -rwxrwxr-x 1 guki guki 320 12월 12 15:00 Backup.sh* -rw-rw-r-- 1 guki guki 16K 12월 13 03:00 ConfigBackup.class -rw-rw-r-- 1 guki guki 22K 12월 12 16:43 ConfigBackup.java -rw-rw-r-- 1 guki guki 941 12월 13 03:00 CreateDir.class -rw-rw-r-- 1 guki guki 1.1K 12월 13 03:00 SaveConfig.class -rw-rw-r-- 1 guki guki 575 12월 13 03:00 TodayDate.class drwxrwxr-x 2 guki guki 4.0K 12월 11 18:48 lib/ |
라이브러리 파일 확인 :
guki@guki-desktop:~/program/ConfigBackup/lib$ ll 합계 308K drwxrwxr-x 2 guki guki 4.0K 12월 11 18:48 ./ drwxrwxr-x 3 guki guki 4.0K 12월 13 07:41 ../ -rw-rw-r-- 1 guki guki 297K 12월 11 18:41 commons-net-3.5.jar |
보기와 같이 commons-net-3.5.jar 파일을 import 하여 Class를 구성하고 Java를 실행하고자 한다.
Class 파일 구성 :
#javac -cp ".:/home/guki/program/ConfigBackup/lib/commons-net-3.5.jar" ConfigBackup.java |
-cp : class Path를 지정하는 옵션
javac를 사용하였을 시 위에서와 같이 class 파일들이 나타난다!!
Java 실행 :
#java ConfigBackup |
두둥... 에러 메시지 발생..
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/net/telnet/TelnetClient at ConfigBackup.<init>(ConfigBackup.java:168) at ConfigBackup.main(ConfigBackup.java:425) Caused by: java.lang.ClassNotFoundException: org.apache.commons.net.telnet.TelnetClient at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) |
보아하니 TelnetClient library를 찾지 못해 나오는 에러 메시지......OTL....
외부 library 지정하여 JAVA 실행 :
#java -cp ".:/home/guki/program/ConfigBackup/lib/commons-net-3.5.jar" ConfigBackup |
깔끔하게 실행이 잘된다,
+ 추가(feat. 스크립트 생성 및 crontab 지정)
나의 주 목적은 정해진 시간에 Backup 프로그램이 잘 실행되도록 하는것이며 위와 같이 진행할 경우 java파일이 수정될 때마다 저 긴 classpath를 일일이 지정해주고 javac로 class만들고 java를 실행하기가 불편했다.. 따라서 crontab 에 지정해 줄 Backup.sh 스크립트를 만들고 crontab에 등록하니 보다 더 깔끔해졌다,ㅎ
Backup.sh 생성 :
#vi Backup.sh #!/bin/bash cd /home/guki/program/ConfigBackup/ #Class 삭제 rm -f /home/guki/program/ConfigBackup/*.class #Class 생성 javac -cp ".:/home/guki/program/ConfigBackup/lib/commons-net-3.5.jar" ConfigBackup.java #프로그램 실행 java -cp ".:/home/guki/program/ConfigBackup/lib/commons-net-3.5.jar" ConfigBackup exit 0 |
Crontab 지정 :
#crontab -e # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command HOME=/home/guki PATH=$HOME/.rbenv/shims:$HOME/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 00 3 * * * $HOME/program/ConfigBackup/Backup.sh > /dev/null 2>&1 |
'Programming > JAVA' 카테고리의 다른 글
[JAVA] Switch Config Backup Program (0) | 2018.08.14 |
---|---|
[JAVA] 일회용 패스워드 생성기(OTP Creator) (0) | 2018.08.14 |
- Total
- Today
- Yesterday
- 케니4
- 웹쉘 탐지
- selinux 설명
- 이지 부스트 700
- 나이키 켄드릭라마
- 이지 700 모브
- 이지 부스트 700 모브
- CloudStack
- 리눅스 hostname 변경
- 조던1 사틴 블랙토
- selinux 정책설정
- linux bridge 설정
- 웹쉘 예방
- selinux 사용법
- 웹쉘 해결
- 리눅스 모니터링
- 조던1 사틴
- 매치스패션 할인
- troijan
- 조던1 사틴 블랙토 개봉기
- 배트멍 할인
- end 응모
- 리니지m 격수 팁
- 파워쉘 문자열
- Java
- 이지 350 지브라
- 피파온라인4
- 파워쉘 문자열 포함 조건
- 나이키 코르테즈
- 파워쉘 문자열 포함
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |