보통은 사용자 마다 (리눅스의 User)
.bash_profile 등의 사용자 초기 실행설정에서
JDK_HOME 이라던가, PATH 등을 정의한다.
그런데, 한 사용자가 JDK 1.7에서만 돌아가는 프로그램과 JDK 1.8에서만 돌아가는 프로그램 두개를 동시에 돌리게 된다면 어떻게 될까?
둘 중 하나는 지원되지 않는 버전일테고, 그 지원되지 않는 버전일 경우 오류가 발생한다.(UnsupportedClassVersionError)
이를 해결하기 위해서는 각 프로그램은 각각 다른 패스를 바라볼 필요가 있다.
즉, 패스 관리를 프로그램 별로 하는 것이다.
만약 Java 1.7, Mysql 4.8 기반의 프로그램 이라면 리눅스의 PATH 변수에 두 실행파일의 경로를 넣어주면 되는것이다.
위 내용을 스크립트로 관리하는 것이 아래 내용이다.
아래는 Bitnami 의 Redmine Stacks 에서 실제 사용하는 방법이다.
1. 다음과 같은 파일을 만들어서 PATH 부분에 실행할 경로를 넣는다. (Bitnami Redmine Stack 의 use_Redmine 파일을 참조하였다.)
#use_Redmine 파일 #!/bin/sh
PATH="/home/nanum/BitnamiRedmineStack2.5.2/perl/bin:/home/nanum/BitnamiRedmineStack2.5.2/sqlite/bin:/home/nanum/BitnamiRedmineStack2.5.2/ruby/bin:/home/nanum/BitnamiRedmineStack2.5.2/subversion/bin:/home/nanum/BitnamiRedmineStack2.5.2/postgresql/bin:/home/nanum/BitnamiRedmineStack2.5.2/php/bin:/home/nanum/BitnamiRedmineStack2.5.2/mysql/bin:/home/nanum/BitnamiRedmineStack2.5.2/apache2/bin:/home/nanum/BitnamiRedmineStack2.5.2/common/bin:$PATH"
exec /bin/bash --noprofile --norc |
만약 리눅스에 설치되어 있는 기본 JDK 가 1.5인데 1.6 버전을 쓰고싶다면
PATH="jdk 경로:$PATH" 를 넣어주면 된다.
2. ./"파일이름" 으로 실행하면 쉘이 바로 실행되는데 이 쉘 안에서 실행하고 싶은 프로그램을 돌리면 된다.
* export PATH=~~~ 가 아닌 PATH=~~~~ 로 되어있다는 것을 알아둬야한다.
export 명령어를 안썻으니 위의 PATH는 일회용인 것이다.
ex)
./use_Redmine
./redmineCtrl start
위 방법을 사용하게 된 계기
Jenkins 를 리눅스에서 실행하는데 버전이 낮아서 오류가 났다.
root 의 암호조차 모르던 상태였기 때문에 위 방법을 사용하여 해결하게 되었다.
물론 path를 export 한 뒤에 입력해도 된다. 하지만 위 방법이 더 안정성 있다고 생각되고
불필요한 작업을 줄인다고 생각하기에 사용하게 되었다.
<파일 내용>
#java1.6.sh
#!bin/sh
PATH="/home/alm/jdk1.6.0_45/bin:$PATH"
exec /bin/bash --noprofile --norc
실행 : ./java1.6.sh
./Jenkins.jar
'프로그래밍 > JAVA' 카테고리의 다른 글
Json Parser 라이브러리 (0) | 2016.02.12 |
---|---|
리눅스 환경에서 JNI 사용 예제 [메모리 누수 내용 추가] (1) | 2016.02.12 |