in Unix : javap -verbose MyClass | grep "major"

 

in Windows : javap -verbose MyClass | findstr "major"

D:\src\com\test\service\>javap -verbose WorkTest | findstr "major"
Warning: Binary file WorkflowMessage contains com.test.service.WorkTest
  major version: 51

* Major version 참고

51 : jdk1.7

52 : jdk1.8

 

 

 



프로젝트 기간중 자체 SMTP를 사용하지 않고 gmail smtp를 이용한 메일발송요청을 받았습니다.

구글링하면 워낙에 많이 나오는 자료라서 흔쾌히 수용했고 로컬에서 쉽게 테스트 완료했습니다.


하지만 서버로 올리고부터 또하나의 삽질은 시작...


정상적인 경우에는 아래와 같은 로그가 찍힙니다.


220 smtp.gmail.com ESMTP 3sm48066013pfo.31 - gsmtp

DEBUG SMTP: connected to host "smtp.gmail.com", port: 465

 

EHLO my-PC-name

250-smtp.gmail.com at your service, [xxx.xxx.xxx.xxx]

250-SIZE 35882577

250-8BITMIME

250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH

250-ENHANCEDSTATUSCODES

250-PIPELINING

250-CHUNKING

250 SMTPUTF8



하지만 서로에서의 로그는 아래와 같이 나면서 오류 ㅠ.ㅠ;;


EHLO

501-5.5.4 Empty HELO/EHLO argument not allowed, closing connection.

501 5.5.4  https://support.google.com/mail/?p=helo sv8sm48122510pab.18 - gsmtp

HELO

DEBUG SMTP: EOF: [EOF]

error to send Email....

javax.mail.MessagingException: [EOF]

        at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1363)

        at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:838)

        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:375)

...


몇몇 구글링을 해봐도 당췌 알수 없다가... smtp 와 hostname 과의 관계를 구글링하고서야 찾아냈습니다.

꼭 gmail을 이용한 smtp발송에 국한된 것도 아닌, 대부분의 smtp 발송과 관련된 것.


결론은 /etc/hosts 파일을 확인하라는 것입니다.

일부 SE 분들은 hostname 변경시 한두군데만 수정하고 hosts파일을 수정하지 않는 경우가 있습니다.


제 블로그 http://gubok.tistory.com/304 에 보면 hostname 변경시 주의사항이란 글에도 나와있듯이 일부 프로그램에서 hostname을 조회할때 /etc/hosts 파일을 참조하는 경우가 많다고 합니다.


결론 : hostname 이 제대로 다 변경되지 않아서 발생하는 오류라는 것









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에서의 프로그램 동작여부를 확인할때 설정 변경해서 사용하면 될것 같습니다.

 

 

 

 



« PREV : 1 : 2 : 3 : 4 : 5 : NEXT »