일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- 리액트
- Java
- Spring Boot
- 쿠버네티스
- c#
- Winform
- 리팩토링
- docker
- VOA
- 스프링부트
- MySQL
- springboot
- git
- 영어공부
- 도커
- 자바
- 마이바티스
- DataGridView
- mybatis
- AWS
- github
- Spring
- 머신러닝
- machine-learning
- kubernetes
- react
- 스프링
- 리눅스
- 파이썬
- Today
- Total
보뇨 다이어리
shell script 로 jar 파일 실행시키기 본문
이것때문에 일주일동안 진짜 *고생을 한거같은데...오늘은 짧게 정리만 하겠슴다!
bash 쉘로 jar 파일을 실행시킬려고하는데 자꾸 기본클래스를 찾을수없다 아니면 NoClassdefFoundError 하면서 오류만 뜨더라군요
여기서 무식하게 계속 해서 시간만 날리는꼴이 되어버렸는데 간단하게 정리만하면 문제를 해결할수있습니다!
우선 첫번째 기본클래스를 찾을수없다라는것은 클래스패스를 지정해주지않아서 기본클래스를 아예 찾을수가 없다 라는 말이죠? 그러니 지정해주면 되는거고 두번째 NoClassdefFoundError 는 저와 같이 한 jar 파일에 여러 라이브러리를 참조해야만할때 참조할수없기때문에 저런 오류메시지를 띄우는것입니다. 해결하기 위해선 네 바로 그렇습니다. 이것또한 클래스패스로 지정해주면 되는거에요!!!!
아래와 같이 해주면 끝납니다 설정은 아래 붙힐께요
1 2 3 4 5 | #!/bin/bash CLASSPATH=C:/var/dependency-jars/* CLASSPATH=${CLASSPATH};C:/var/original-sample22.jar echo "$CLASSPATH" java sample.CreateJarFile | cs |
설명을 이어나가자면 1번줄은 bash 로 쉘을 작성한다는 의미입니다. 그리고 2번줄은 바로 클래스패스를 지정해주는건데 저건 라이브러리들을 지정해준거에요. 즉 ~dependency-jars/* 여기서 별표* 이것이 앞서 디렉토리의 모든것을 참조하겠다 라는 말이죠. 이 클래스패스를 echo 시켜두면 모든 라이브러리들의 path 들이 출력됩니다. 3번줄은 클래스패스를 덫붙힌다고 표현할수있겠네요.. 2번줄에서 정의한 클래스패스를 더해서 추가로 지정할때 ${CLASSPATH} 이렇게 써주고 바로 뒤에 ; 이게 있는데 이건 윈도우상에서 리눅스상에선 : 이겁니다 ㅎㅎ 3번줄은 보시다시피 실행시키고자하는 주가 되는 자르파일이죠. 4번은 echo 라서 건너뛰고 5번줄은 이제 3번줄에서 말한 주가 되는 자르파일의 메인클래스가 있는 패키지 이름 그다음에 메인클래스 이름 이렇게 써줍니다. 저기서는 sample 이 패키지가 되는것이고 CreateJarFile 이 메인메서드가 있는 메인클래스라는것이죠! 이제 끝났습니다. 아래와 같이 실행해주면 출력이 완성~
*** 추가 글
참고로 요즘은 sh run_sample.sh 이런식으로 앞에 sh 를 붙히고 쉘파일을 실행시키지않습니다
뭐 예전부터 그랬을수도....전부장님한테 들은거라
그럼 어떻게 실행하냐? 그건 해당파일에 실행권환을 줘서 ./run_sample.sh 이런식으로 실행하도록 하는것입니다!!
왜 앞에 sh 이 안쓰이냐면 저 방법은 예를들어서 말하면 쉘이라는 특정 틀에 커스텀한 쉘스크립트를 넣어서 작동시키는것이기때문에 리소스가 2배 낭비된다고 하더라군요? 벌써 1년전 들은내용이라 가물가물하지만 ㅎㅎ;
'컴퓨터 관련 > 서버 정보' 카테고리의 다른 글
contains an integer token converter ~~ 에러 (0) | 2018.06.26 |
---|---|
쉘 실행시 구문 에러 (0) | 2018.06.11 |
KafKa 구성요소에 대한 의미 (0) | 2018.04.20 |
웹페이지 오류들 (0) | 2018.03.26 |
쉘 스크립트 실행 권한으로 바꾸기 (0) | 2018.03.19 |