Development,  Java

Eclipse의 class파일로 exe파일 만드는 방법

Hits: 732

사내에서 class 파일을 exe로 만들어 배포를 해야 하는 일이 생겨 정리겸 작성

test.java 파일이 실행파일이라고 가정.

  1. Eclipse에서 File -> Export를 클릭한다.
  2. JAR file을 선택
  3. test.java 파일과 test.java안에 필요한 java 파일들도 같이 선택한다.
  4. 아래와 같이 선택후 Finish 클릭

test2.jar 파일이 생성 되었고.

jar파일이 동작이 정상적으로 되는지 확인 하기 위해 cmd에서 아래 명령어를 입력한다.

java -cp [jar 파일 경로] [클래스 이름]

ex) java -cp ./test2.jar Test

실행이 정상적으로 되는 것을 확인할 수 있다.

“java 및 jar 실행시 내부 또는 외부 명령, 실행할 수 있는 프로그램 또는 배치 파일이 아닙니다.”
오류가 나온다면 자바를 설치한 곳에 경로로 들어가서 처리하면 된다.

나의 경우 C:\Program Files\Java\jdk-13.0.2\bin 경로로 들어가서 cmd를 실행했고
아래에 작성한 jar 파일을 묶기위해 test라는 폴더도 C:\Program Files\Java\jdk-13.0.2\bin\test에 만들어 두었다.

추가로 Libraries 파일이 있는 경우 아래와 같이 입력

java -cp [jar 파일 경로1, jar 파일경로2, jar 파일경로3] [클래스 이름]

ex) java -cp ./test2.jar;./mail.jar;./servlet-api.jar Test

정상적으로 실행을 확인 하고 나니..

나는 위와 같이 2개의 libraries(mail.jar, servlet-api.jar) + class 파일(test2.jar)을 하나의 jar로 합쳐야하는 상황이여서 다음과 같이 진행했다.

  1. Libraries에 있는 jar 파일들을 test라는 폴더에 풀어준다. (C:\Program Files\Java\jdk-13.0.2\bin\test)
  2. 각각의 jar를 풀면 META-INF 폴더 안에 MANIFEST.MF 파일이 있는데 하나로 전부 합쳐줄 것. (jar 풀어서 나온 값들 복붙함)
  3. 한 폴더에 전부 풀었으면 수정한 Class 파일을 넣어준다.(package가 없는것이 전제 조건)
  4. 이후 명령어를 사용하여 jar 파일을 만들어 준다.
    • 명령어 : jar cf [파일명] -C [test 폴더 경로] [전체]
    • ex) jar cf test2.jar -C ./test .

해당 명령어를 실행하면 cmd를 실행했던 경로에 test2.jar 파일로 만들어 질 것이다.

만들어진 파일도 동일하게 실행을 해본다.

ex) java -cp ./test2.jar Test

“만들어진 jar 파일에 목록을 보고 싶다면?”
명령어 : jar tf “파일명”
ex) jar tf test2.jar

이제 정상 파일을 확인 했으니 exe 파일을 만들어 보자.

exe 확장자 변경을 위해 Launch4j를 다운로드 받는다.

Output file엔 결과물 exe 파일을 선택하고 Jar엔 jar 파일을 선택한다.

Classpath 탭에는 Main Class에 Test를, Classpath 안에는 test2.jar를 입력한다

JRE 탭을 클릭하고 JRE Path가 기본적으로 있는지 확인한다. (%JAVA_HOME%;%PATH%)

이후 톱니바퀴 버튼을 클릭해 xml 파일을 생성함과 동시에 exe파일이 생성된다.

해당 exe 파일을 실행하면 Test 클래스가 실행되는것을 확인할 수 있다.

*번외*

JAVA가 설치되어있지 않은 곳에 exe파일을 옮겨 실행하고자 한다면?

나는 exe 파일과 JAVA 1.8 폴더를 같이 압축하여 exe파일의 jre의 경로를 JAVA 1.8안에 있는 java.exe를 바라보도록 설정하였다.

JRE paths: .\java8\bin 으로 변경하고 Min JRE version도 1.6.0으로 설정 후에 다시 exe파일을 생성

이후 생성된 exe 파일을 실행하니 정상 동작을 확인 했다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다