자바 컴파일을 이해하기 위해 cmd로 간단한 자바를 컴파일하려고 한다.
자바의 경우 파일명과 클래스명이 같아야 하니 이점 유의하며 소스코드를 작성하길 바란다. 오른쪽과 같이 소스를 작성한후 javac를 이용하여 컴파일 해보자.
자이제 javac명령어를 통해 hello.java 가 hello.class로 컴파일 된 것을 볼 수 있다. java명령어를 통해 실행해보니 우리가 입력한 Hello가 출력된 것을 볼 수 있다.
이제 이 hello클래스를 패키지로 만들어 볼려고 한다. 패키지명은 보통 도메인의 역순으로 구성되니 위와 같은 규칙으로 해볼려고 한다. 주소명을 간단하게 choi.com으로 구성하여 진행하도록 하겠다. 자바의 패키지는 디렉토리로 구별되니 com디렉토리 안에 choi 디렉토리를 넣고 이전에 사용한 hello.java를 choi디렉토리 안으로 이동시키겠다.
자 왼쪽과 같은 폴더 위치로 맞추고 오른쪽과 같이 텍스트 파일 위에 package com.choi; 를 추가해준다.
이렇게 하고 컴파일을 해주면 빌드가 된다. 참고로 위와 같이 텍스트에서 package를 올바르게 설정하지 않으면 기본클래스 [클래스경로]를 찾거나 로드할 수 없다고 뜨니 주의해주자.
자 이제 실제 자바에서 패키지가 어떠한 구조로 이루어 져있는지 이해가 되었다면 또다른 것을 생각해보자.
이제 클래스 파일을 jar 파일로 패키징하는 방법을 알아보자.
명령어는 다음과 같다.
jar -cf [압축파일명] [경로] -> jar -cf test.jar com\*
*아카이빙이란?
①파일 전송을 위해 백업용, 보관용 기타 다른 목적으로 한곳에 모아둔 일단의 파일. 단순한 파일 목록이거나디렉터리혹은카탈로그로 된 파일들이며, 지원되는 프로그램에 따라 달라진다.
②라이브러리,웹사이트등에서 수집된 일단의출판물, 웹사이트의 잡지, 저널, 신문들은 지난 호(號)가아카이브로 사용된다.
③내려받기프로그램을 제공하는 웹 및파일 전송 규약(FTP)사이트가 내려받기 목록으로 사용하는 파일. 아카이브 파일의 작성과 복원을 위한 소프트웨어를 아카이버(achiver)라고 한다.
출처:https://ggang-tong.tistory.com/entry/아카이빙Archiving-과-백업Backup-의-차이점[깡통]
jar파일을 하는 이유는 이러한 아카이빙을 하기 위해서 사용한다. 자 이제 이 jar파일을 이용해서 방금 만든 hello를 실행해 보자.
마찬가지로 Hello출력문이 잘 동작한다. 하지만 위의 명령어 구조를 살펴보면 .jar파일에서부터 경로를 하나하나 지정해 줘서 실행해줘야 한다. 따라서 이제 .jar을 실행하는 것만으로도 hello.class를 실행시킬수 있게 하는 방법을 소개하겠다.
*매니페스트 파일(manifest file)은컴퓨팅에서 집합의 일부 또는 논리정연한 단위인 파일들의 그룹을 위한 메타데이터를 포함하는 파일이다. 예를 들어, 컴퓨터 프로그램의 파일들은 이름, 버전 번호, 라이선스, 프로그램의 구성 파일들을 가질 수 있다.
출처:ko.wikipedia.org/wiki/%EB%A7%A4%EB%8B%88%ED%8E%98%EC%8A%A4%ED%8A%B8_%ED%8C%8C%EC%9D%BC
이러한 메니페스트파일을 사용하여야 한다.
자 이제 이러한 manifest를 추가해주고
jar -cvmf mainfest.txt test.jar com\*
명령어로 컴파일후
java -jar test.jar
을 입력하면 Hello가 출력하는걸 볼 수 있다.
manifest.txt를 만들때 주의할점은 꼭 소스코드를 다 입력하고 엔터를 눌러 개행을 시켜야 한다는 것이다.
'Java' 카테고리의 다른 글
자바 데이터 타입 (0) | 2022.05.27 |
---|---|
Garbage Collector (0) | 2022.05.27 |
JVM과 자바 컴파일 (0) | 2022.05.27 |
logback 직접 추가해보기 (0) | 2021.01.05 |
프로그래밍의 발달 과정 (0) | 2021.01.01 |