본문 바로가기

IT

Linux(centOS9) 설정 5( CentOS에서 자바 jar 생성 및 실행)

728x90

yum 을 통해서 openjdk17 버전 설치 

  • sudo yum install java17-openjdk -y
  • sudo yum install java17-openjdk-devel -y

Main.java 생성 및 컴파일, 실행

  • mkdir -p /web/java_site1
  • cd /web/java_site1
  • vim Main.java

Main.java

  • 컴파일 => javac Main.java 
  • 실행 => Main.class 
  • 이 상황에는 Main클래스 하나이기 때문에 문제가 되지 않지만 Main 클래스에서 다른 클래스들을 활용하여 컴파일 할 경우 여러 .class 파일이 생성되는데 이를 압축하기 위한 것이 jar 파일이다.

 

jar 파일의 종류 1 : executable jar

  • 그 자체로 실행이 가능하다.
  • 실행에 필요한 것들을 압축파일안에 많이 넣을 수록, 점점 더 다양한 환경에서 실행될 수 있게 된다.
    • 실행에 필요한 모든것을 넣을 수도 있다.
    • 많이 넣을 수 록 용량은 커진다.
    • 그렇지만 그렇게 만들어진 jar 파일은 거의 어디에서나 실행 할 수 있다.

executable jar 파일 생성 및 실행

  • vim Manifest.txt 로 Main 클래스 설정=>  Main-class : Main 
  • jar 파일 생성 => jar -cvmf Manifest.txt java_site1.jar Main.class
  • jar 파일 실행 => java -jar java_site1.jar

jar 파일 실행

 

jar 파일의 종류 2 : lib jar

  • 그 자체로 실행파일이 아닌 경우가 많다.
  • 보통 다른 프로젝트에 종속되어 사용된다.
  • 참고로 lib 들은 종속성 TREE로 묶인다.
    • 예를들어 A 라이브러리가 라이브러리 B와 C에 의존한다고 가정했을 때
    • 인텔리제이 같은 IDE 환경에서 개발자가 A 라이브러리를 설치하려는 의도가 있다면,
    • 인텔레제이가 알아서 라이브러리 B와 C도 자동으로 설치해 준다.
      • 사실 maven과 gradle이 이 역할을 수행한다.

 

jar 파일의 종류 3 : war

  • executable jar의 한 종류이지만, 톰캣이 빠져있다.
  • 그 이유는 어차피 war는 톰캣내부에 삽입되기 때문이다.
  • 스프링부트에서는 프로그램을 배포할 때 jar, war 2개의 선택지가 존재한다.
    • jar로 하면 기존의 war에 내장톰캣까지 넣는다.
    • 이렇게하면 자바만 설치되어 있고 톰캣이 없는 환경에서도 우리 프로그램을 실행할 수 있다.