jar 란?
- 일종의 자바 프로젝트 압축 파일
- ZIP 파일 압축 알고리즘을 기반으로 만들어짐 >> 반디집, 알집과 같은 zip 프로그램과 호환 가능
- JAR 파일은 웹브라우저에서 빠르게 다운로드할 수 있도록, 자바 애플릿을 위한 클래스, 이미지 및 사운드 파일들을 하나의 파일에 압축하여 담고 있는 파일이다.
- 사용자의 요청에 의해 웹페이지의 일부로 들어오는 애플릿에는 여러개의 파일들이 담겨 있을 수 있는데, 각각은 웹페이지와 함께 다운로드 되어야 한다. 이 때 그 파일들을 하나의 파일에 압축하면 다운로드에 소요되는 시간이 절약된다.
- 자바로 개발한 여러 클래스 파일들 또는 패키지 파일이 있을 때, 이를 하나로 묶으면 그 클래스들을 참조하기도 편하고, 다운 받기도 쉽다.
- 자바 어플리케이션 프로그램을 개발 후 하나의 파일로 묶어서 실행하게 해준다.
- JAR 로 묶어서 배포하게 되면, 경로나 파일의 위치에 상관없이 프로그램의 실행이 가능하다.
jar 옵션
-client
자바 HotSpot Client VM을 선택한다. (디폴트 값이다)
-server
자바 HotSpot Server VM을 선택한다.
-classpath (-cp)
참조할 클래스 파일 패스를 지정하는데, jar파일, zip파일, 클래스파일의 디렉터리 위치를 기술한다.
각 클래스파일 패스는 콜론(:)을 통해서, 분리시켜 기술한다.
자바VM은 자바프로그램을 로딩시, -classpath로 지정된 클래스 패스나, java플래폼이 설치된, 운영체제에서의 환경변수로 지정된,
클래스패스를 통해서, 클래스 파일들을 참조하게 된다.
-D <property name>=<property value>
시스템의 property 값을 설정한다.
ex) java -Djava.library.path=. HelloWorld
자바의 시스템 property(속성)중 “java.library.path”값을 “.” (현재디렉터리)로 지정해서, HelloWorld 실행시켜라는 의미 이다.
위와같이 자바VM에 지정된 속성을 실행시 -D옵션을 사용해서, 변경, 지정할수 있다.
-jar 파일이름
jar파일로 압축되어져 있는 자바 프로그램을 실행시킨다.
클래스 파일이름 대신 jar파일을 사용해서, 압축되어져 있는 자바 프로그램을 실행시킬수 있는데, 위프로그램이 제대로 실행되어지기
위해서, Jar파일안의 manifest라는 텍스트 파일에 Main-Class:classname 같은 형태의 텍스트 라인이 포함되어 있어야 한다.
그리고, 여기에 기술된 classname은 main함수를 포함하고 있는 클래스 이름이 되어야 한다.
-verbose
자바프로그램 실행되어지는 정보를 화면에 출력해준다.
-verbose:class
로딩되어지는 각클래스들의 정보를 화면에 출력한다.
-verbose:gc
garbage collection 이벤트를 화면에 출력한다.
-verbose:jni
native 함수들과 다른 자바 native 인터페이스 사용에 대한 정보를 출력한다.
-version
현재 JVM의 버젼 정보만 출력한다.
-showversion
현재 JVM의 버젼정보를 출력한다.
java -showversion HelloWolrd 와 같이 자바 프로그램을 실행시키면서, 자바 버젼정보를 출력할수 있다.
-X
비표준 자바옵션 리스트를 화면에 출력해준다.
-Xms, -Xmx
자바를 구동시, JVM이 사용가능한 최대 메모리 사이즈를 변경합니다.
JVM이 자바프로그램을 구동하기 위해, 초기설정된 메모리사이즈는 64M입니다.
사용 방법은 다음과 같습니다
java -Xms <초기힙사이즈> -Xmx <최대힙사이즈>
예를들어, Hello.class 자바 프로그램을 시작시, 256M(메가)의 힙사이즈를 할당하며, 최대 512M의 힙사이즈를 할당받고 싶다면,
다음과 같이 합니다.
java -Xms256m -Xmx512m Hello
-XX:PermSize, -XX:MaxPermSize
클래스 메타 정보 메모리 (Xms, Xmx 메모리와 별도로 관리된다.
-XX:PermSize=64m -XX:MaxPermSize=256m
intelli j 에서 jar 파일 생성
- https://stackoverflow.com/questions/1082580/how-to-build-jars-from-intellij-properly
- https://stackoverflow.com/questions/20697144/can-not-set-the-final-jar-name-with-maven-assembly-plugin
- https://intellij-support.jetbrains.com/hc/en-us/community/posts/206872335-How-to-create-executable-JAR-using-Intellij-
- pom.xml 위치에서 mvn -B -U -f pom.xml -Dmaven.test.skip=true -Dbuild.number=641 -P svcrepo clean deploy
terminal 에서 jar 파일 생성
- 리눅스 환경에서 java(jar)를 데몬처럼 실행
- java -jar jar파일명.jar
- 사용자가 로그아웃시 프로그램 종료 됨
- 사용자가 로그아웃해도 백그라운드로 실행되게 하는 명령어
- $ nohup java -jar jar파일명.jar
- 프로세스 종료
- 찾기 : ps -ef | grep ‘jar파일명’
- pid
- sudo netstat -ltnp
- 종료 : kill -9 (pid)