본문 바로가기
CLOUD/AWS

amazoncorretto(docker) 및 jenkins에 java 11 적용 하기(openjdk)

by Rainbound-IT 2023. 2. 7.
반응형

목차

     

     

    Caused by: java.lang.UnsupportedClassVersionError: org/opensearch/index/query/QueryBuilder has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

    AWS ECS 에서나 JENKINS 빌드할때 위와 같은 에러가 발생한다.

    이 경우 java 버전이 낮아서 지원이 안된다는 의미이다.

    https://en.wikipedia.org/wiki/Java_class_file

     

    Java class file - Wikipedia

    From Wikipedia, the free encyclopedia A Java class file is a file (with the .class filename extension) containing Java bytecode that can be executed on the Java Virtual Machine (JVM). A Java class file is usually produced by a Java compiler from Java progr

    en.wikipedia.org

    ECS에서 발생했을경우와 JENKINS에서 발생하느냐에 따라 적용방법이 다릅니다.

    ECS의 경우 corretto버전이나 내부에서 설치를 해야하고

    jekins의 경우 서버에 설치후 위치를 지정해주면 됩니다.

     

     

     

    Amazoncorretto에 java 11 적용

     

    방법은 3가지 혹은 더 있을 것이다.

    1. amazoncorretto version 11로 업데이트

    2. docker 이미지 생성시 java11 설치

    3. 패키지 다운받아서 빌드시 복사해서 적용

     

    이 세가지 중 3번은 번거로워서 살펴보지 않겠다.

    3번 대략 이야기하면 java 패키지를 dockerfile에서 run을통하여 다운받아 설치하고 환경변수 적용하면 될것같다.

     

    1. amazoncorretto version 11로 업데이트

    amazoncorretto의 경우  open jdk의 버전에 따라 버전이 변경된다.

    jdk 버전에 따라 correto 버전이 변경되는것 같다.

    https://aws.amazon.com/ko/blogs/korea/amazon-corretto-multi-platfom-openjdk-distribution/

     

    Amazon Corretto, 장기 지원 멀티 플랫폼 OpenJDK 무료 배포판 사용하기 | Amazon Web Services

    Java는 AWS 고객이 가장 널리 사용하는 언어 중 하나이며, 클라우드 상의 자바 애플리케이션이 지속적으로 지원되는 것은 매우 중요합니다. 작년 이후 많은 AWS  고객들이 장기 지원(Long-term Support)

    aws.amazon.com

    그래서 간단히 dockerfile 에 있는 버전만 변경하면 된다.

    (from amazoncorreetto:8을 11로 변경하면됩니다.)

    FROM amazoncorretto:11 
    RUN echo $' \
    public class Hello { \
    public static void main(String[] args) { \
    System.out.println("Welcome to Amazon Corretto!"); \
    } \
    }' > Hello.java
    RUN javac Hello.java
    CMD ["java", "Hello"]

     

     

     

    2. docker 이미지 생성시 java11 설치

    RUN 을 이용하여 명령어를 입력하는 방법 입니다. 

    RUN yum install java-11-amazon-corretto.x86_64
    FROM amazoncorretto:8 
    RUN yum install java-11-amazon-corretto.x86_64
    RUN echo $' \
    public class Hello { \
    public static void main(String[] args) { \
    System.out.println("Welcome to Amazon Corretto!"); \
    } \
    }' > Hello.java
    RUN javac Hello.java
    CMD ["java", "Hello"]

     

     

     

    Jenkins에 java 11 적용

    jenkins관리 - Global Tool Configuration 에서

    jdk 목록을 보면

    ctrl+f 후 jdk로 찾을 수 있다.

    여기서 Add JDK 클릭

     

     Oracle Java SE 11+는 상업용 라이센스 없이 비즈니스, 상업용 또는 프로덕션 용도로 사용할 수 없습니다. 라고 나와서

    자동 install은 상업용 라이센스가 필요한 모양이다. 

    그렇기 때문에 따로 설치를 해줘야 합니다.

     

     

    서버에 java 11 설치

    우선 젠킨스가 설치된 서버에 접속합니다.

    (docker에 젠킨스가 설치 되어 있을경우 -itu 옵션으로 root로 접속한뒤에 설치합니다. 혹은 docker file에 아래 명령어를 입력합니다.)

     

    ubuntu

    sudo apt-get install openjdk-11-jdk

    설치경로

    /usr/lib/jvm/java-11-openjdk-amd64

     

    amazon-linux

    sudo yum install -y java-11-amazon-corretto.x86_64

    설치경로

    /usr/lib/jvm/java-11-amazon-corretto.x86_64

     

     

     

    Jenkins에 설정 적용

    설치가 완료되었다면 아까 Global Tool Configuration의 jdk로 돌아갑니다.

    Install automatically 옆에 체크를 클릭하여 해제합니다.

     

    그럼 JAVA_HOME 이라고 입력하는 란이 하나 나오는데

    NAME 에는 적당한이름

    JAVA_HOME에는 설치경로를 적어 주시고 save 하여 저장하면 끝납니다.

     

    Jenkins에서 java 버전 확인

    아무 freestyle 프로젝트하나 만들고 빌드에 Add build step - excute shell 에 java -version을 입력하고 저장한뒤 빌드합니다.

    add build step에 Execute shell을 클릭하고 command에 입력하고 저장

    java -version

     

    빌드 한것의 콘솔출력을 확인해보면 적용된것을 알수있다.

    빌드 하고 나서 콘솔출력을 확인하면 11버전이 잘 적용 된것을 확인 하실수 있습니다.

     

     

     

     

     

    Reference

    docker로 amazon corretto 시작

    https://docs.aws.amazon.com/ko_kr/corretto/latest/corretto-11-ug/docker-install.html

     

    도커 이미지에서 Amazon Corretto 11을 시작하기 - Amazon Corretto

    이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

    docs.aws.amazon.com

     

    https://www.blog.ecsimsw.com/entry/%EC%A0%A0%ED%82%A8%EC%8A%A4-jdk-%EB%B2%84%EC%A0%84-11%EB%A1%9C-%EC%98%AC%EB%A6%AC%EB%8A%94-%EB%B0%A9%EB%B2%95

     

    젠킨스 jdk 버전 11로 올리는 방법

    배경 이번 프로젝트의 경우에는 jdk8이 문제가 없던 상황에서 잘 쓰다가 jdk11이 필요한 상황이었다. 예를 들면 rabbitMQ나 sonarqube를 사용하는데 11 이상이 필요한 것을 확인했다. dev 서버, prod 서버,

    www.blog.ecsimsw.com

     

     

    반응형

    댓글