jBoss를 설치하기 위해서 CentOS에 jdk 를 설치하는데, 약간의 문제가 발생했습니다.

문제라기 보단 제대로 설정을 하지 않고 진행했을 경우에 발생하는 현상입니다.

시스템을 자주 다뤄보고 설치해본 분이라면 문제가 될 것도 아니지만 어쩌다 시스템에 접근하는 개발자들에게는 이또한 당황스러운 시츄에이션임에는 분명합니다.

 

사실 리눅스든, 윈도우든 jdk설치하는것을 일도 아닙니다. 게다가 tomcat, jboss등의 WAS를 띄우기 위한 목적이라면 더더욱 다른 세팅은 건드리지 않아도 잘 돌아가기에 더더욱 문제가 없습니다.

 

다운받고 ==> 압축풀고 ==> 해당 was 설정에 path 강제 설정해주고 ==> 쪼금 더 나아가면 /etc/profile에 path 등록해 주는 정도...

 

하지만 리눅스 환경에서 컴파일이라도 할 요량이면 설치한 jdk의 버전이 정확히 java/ javac 명령어를 실행시켰을 때 작동해야 합니다.

평소에는 설치후 java -version 하면 아래와 같은 버전이 정상적으로 표시되었었습니다.

 

[root@test_centos_tomcat ~]# java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
[root@test_centos_tomcat ~]#

 

그런데 오늘은 이전에 설치했던 가상서버에(java 를 설치했는지 않했는지 헷갈릴정도 오래된...)서 java를 확인하는데, 아래와 같이 나옵니다.

 

[root@test_centos_tomcat ~]# java
Usage: gij [OPTION] ... CLASS [ARGS] ...
          to invoke CLASS.main, or
       gij -jar [OPTION] ... JARFILE [ARGS] ...
          to execute a jar file
Try `gij --help' for more information.
[root@test_centos_tomcat ~]# java -version
java version "1.5.0"
gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-3)

 

OpenJDK는 들어봤는데, gij .. 어쩌고 하는 것은 처음 봅니다.

 

기존 jdk를 어디에 설치했는지 찾아봅니다.

 

...#] which java

path 에 등록된 java만 나오고 그렇지 않는 java는 안나옵니다. 무식한 방법으로 find를 통해서 다 뒤졌습니다.

/usr/java/  밑에 위치하고 있습니다.

lrwxrwxrwx.  1 root root   16 Sep 24  2012 default -> /usr/java/latest
drwxr-xr-x. 10 root root 4096 Sep 24  2012 jdk1.7.0_07
lrwxrwxrwx.  1 root root   21 Sep 24  2012 latest -> /usr/java/jdk1.7.0_07

 

분명 설치는 되어 있습니다. 그런데 java -version 을 해보면 이상한 jvm의 version 정보가 나옵니다.

 

이제 변경해 보도록 하겠습니다. 사용할 명령어는 "alternatives"입니다.

 

[root@test_centos_tomcat ~]# alternatives --help

 

alternatives version 1.3.49.3 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install <link> <name> <path> <priority>
                    [--initscript <service>]
                    [--slave <link> <name> <path>]*
       alternatives --remove <name> <path>
       alternatives --auto <name>
       alternatives --config <name>
       alternatives --display <name>
       alternatives --set <name> <path>

common options: --verbose --test --help --usage --version
                --altdir <directory> --admindir <directory> 

 

[root@test_centos_tomcat ~]# alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+  1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java

Enter to keep the current selection[+], or type selection number:

 

 

[root@test_centos_tomcat bin]# cd /etc/alternatives/
[root@test_centos_tomcat alternatives]# ll
total 0
lrwxrwxrwx. 1 root root 35 Jun 11 18:50 java -> /usr/lib/jvm/jre-1.5.0-gcj/bin/java
lrwxrwxrwx. 1 root root 32 Jun 11 18:50 jaxp_parser_impl -> /usr/share/java/libgcj-4.4.7.jar
lrwxrwxrwx. 1 root root 26 Jun 11 18:50 jre -> /usr/lib/jvm/jre-1.5.0-gcj
lrwxrwxrwx. 1 root root 26 Jun 11 18:50 jre_1.5.0 -> /usr/lib/jvm/jre-1.5.0-gcj
lrwxrwxrwx. 1 root root 34 Jun 11 18:50 jre_1.5.0_exports -> /usr/lib/jvm-exports/jre-1.5.0-gcj
lrwxrwxrwx. 1 root root 34 Jun 11 18:50 jre_exports -> /usr/lib/jvm-exports/jre-1.5.0-gcj
lrwxrwxrwx. 1 root root 26 Jun 11 18:50 jre_gcj -> /usr/lib/jvm/jre-1.5.0-gcj
lrwxrwxrwx. 1 root root 34 Jun 11 18:50 jre_gcj_exports -> /usr/lib/jvm-exports/jre-1.5.0-gcj
lrwxrwxrwx. 1 root root 38 Jun 11 18:50 keytool -> /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool
lrwxrwxrwx. 1 root root 26 Sep 19  2012 mta -> /usr/sbin/sendmail.postfix
lrwxrwxrwx. 1 root root 40 Sep 19  2012 mta-aliasesman -> /usr/share/man/man5/aliases.postfix.5.gz
lrwxrwxrwx. 1 root root 22 Sep 19  2012 mta-mailq -> /usr/bin/mailq.postfix
lrwxrwxrwx. 1 root root 38 Sep 19  2012 mta-mailqman -> /usr/share/man/man1/mailq.postfix.1.gz
lrwxrwxrwx. 1 root root 27 Sep 19  2012 mta-newaliases -> /usr/bin/newaliases.postfix
lrwxrwxrwx. 1 root root 43 Sep 19  2012 mta-newaliasesman -> /usr/share/man/man1/newaliases.postfix.1.gz
lrwxrwxrwx. 1 root root 23 Sep 19  2012 mta-pam -> /etc/pam.d/smtp.postfix
lrwxrwxrwx. 1 root root 22 Sep 19  2012 mta-rmail -> /usr/bin/rmail.postfix
lrwxrwxrwx. 1 root root 25 Sep 19  2012 mta-sendmail -> /usr/lib/sendmail.postfix
lrwxrwxrwx. 1 root root 41 Sep 19  2012 mta-sendmailman -> /usr/share/man/man1/sendmail.postfix.1.gz
lrwxrwxrwx. 1 root root 42 Jun 11 18:50 rmiregistry -> /usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry
[root@test_centos_tomcat alternatives]# cd
[root@test_centos_tomcat ~]# getconf LONG_BIT
64

 

 

목록에 새로이 설치한 java가 존재하지 않습니다. 추가해 줍니다.

 

 ~]# alternatives --install /usr/bin/java java /usr/java/latest/bin/java 2

 

목록을 확인합니다.

 

[root@test_centos_tomcat ~]# alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
* +  1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java

      2           /usr/java/latest/bin/java

Enter to keep the current selection[+], or type selection number: 2

 

첫번째가 디폴트로 설정되어 있고 이를 변경합니다.

이제 새로인 설정한 java 가 기본으로 잡힙니다.

 

 ~]# /usr/sbin/update-alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*  1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
  + 2           /usr/java/latest/bin/java

 

자바 버전을 다시 확인해 보겠습니다.

 

[root@test_centos_tomcat ~]# java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

 

정상적으로 나옵니다.

 

이런식으로 여러개의 jdk를 설치해 놓고 각각 어떤 것을 사용할 것인가 결정하도록 합니다.

 

요약해 보면 다음과 같습니다.

1. java 설치

/usr/java/ 이하에 설치되지만 경로를 변경해서 설치 가능

 

2. export path, classpath 등록 (/etc/profile 에 추가)

   

    export JAVA_OPTS="-Xms256m -Xmx1024m -XX:MaxPermSize=128m"

 

    export JAVA_HOME=/usr/java/latest
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH="."

 

3. alternatives를 이용해서 디폴트 java 설정.

 

 ~]# alternatives --config java 확인

없으면 install (기본적으로 없는게 맞을듯.)

~]# alternatives --install /usr/bin/java java /usr/java/latest/bin/java 2 <--숫자는 몇번째 위치시킬꺼냐의 의미. 크게 중요치 않음. 큰숫자를 넣어도 됨.

~]# /usr/sbin/update-alternatives --config java 로 설치된 java 설정.

 

IBM AIX 에 설치되는 IBM jdk도 linux 에 설치해보고 해당 JVM에서의 프로그램 동작여부를 확인할때 설정 변경해서 사용하면 될것 같습니다.