본문 바로가기

Java스터디/기초

#05 Java 툴없이 만들기 간단한 출력 프로그램 Jar 파일 만들고 연동

Jar파일 만들기전

폴더 구조

Calc
ㄴsrc
   ㄴcore
      ㄴAdder.java
   ㄴ main
      ㄴ TestApp.java
ㄴbin
ㄴrun.sh

 

* src/core/Adder.java

package core;

public class Adder{
        public int add(int a, int b){
                return a + b;
        }
}

 

* src/main/TestApp.java

package main;

import core.Adder;

public class TestApp{
        public static void main(String[] args){
                int size = args.length;
                if(size <= 1)
                        System.exit(-1);

                int a = Integer.parseInt(args[0]);
                int b = Integer.parseInt(args[1]);

                Adder add = new Adder();
                int result = add.add(a, b);
                System.out.println("result : " + result);
        }
}

 

* run.sh

아래와같이 컴파일과 실행을 할수 있게 쉘파일을 작성한다.

$1 $2 는 쉘파일을 실행할때 같이 보내는 파라미터이다.

javac -d ./bin -sourcepath ./src src/main/TestApp.java
javac -d ./bin -sourcepath ./src src/core/Adder.java

java -cp ./bin main.TestApp $1 $2

 

* 실행

루트폴더(Calc) 에서 

sh ./run.sh 숫자 숫자 입력하여 실행

ex) sh ./run.sh 2 2

 

2 2는 숫자 파라미터로 쉘파일로 넘어가서 $1 $2에 삽입된다.

 

실행 가능한 Jar 라이브러리 만들기

manifest.txt 파일 생성

Manifest-Version: 1.0
Main-Class: main.TestApp
Class-Path: lib/Calc.jar

 

Jar 파일 만들기

jar -cvfm Calc.jar manifest.txt -C bin .

명령어 설명
-c: 새 JAR 파일을 생성합니다.
-v: 생성 과정을 자세히 출력합니다.
-f MyApp.jar: 생성할 JAR 파일 이름을 지정합니다.
-C bin . : bin 디렉토리의 내용을 기준으로 JAR 파일을 만듭니다.

-m manifest.txt: manifest.txt 파일을 포함합니다.

 

위 명령어를 실행하면 실행한 위치에 Calc.jar 파일이 생긴다.

이것을 mkdir로 lib폴더를 생성하여 "mv 현재위치/파일이름 이동위치/파일이름" 를 사용 하여 라이브러리를 lib 폴더 밑에 위치 시키자.

 

Jar파일 사용하여 프로그램 변경

 

jar파일을 lib 파일에 위치시키고 라이브러리를 이용하여 사용할 것이다.

core 밑에 있는 Adder.java를 지우고 깔끔하게 하기 위하여 bin도 같이 지워주자 이전에 컴파일한게 남아 있을 수도 있다.


Calc
ㄴsrc
   ㄴcore
      ㄴAdder.java
   ㄴ main
      ㄴ TestApp.java
ㄴbin
ㄴlib
   ㄴ Calc.jar
ㄴmanifest.txt
ㄴrun.sh

 

* run.sh

아래와 같이 수정한다.

#javac -d ./bin -sourcepath ./src src/main/TestApp.java
#javac -d ./bin -sourcepath ./src src/core/Adder.java
javac -cp "./lib/Calc.jar" -d ./src src/main/TestApp.java

#java -cp ./bin main.TestApp $1 $2
java -cp "./bin:./lib/Calc.jar" main.TestApp $1 $2

 

* run.sh 스트립트 파일 실행

sh run.sh 숫자 숫자
ex) sh run.sh 2 2

 

반응형