본문 바로가기

콤퓨타/뚝딱뚝딱

[Book Counter] 자바코드 .exe 생성

 

 

ai에게 요청사항을 말하고 

ai가 만들어준 코드를 받아쓰고

받아쓰면서 내가 생각했었던 기능이 구현되는것을 눈으로 보고 

코드를 쓰고 뭔가를 실행시켜보고.. 

예전에 기능이 잔뜩 있는 sw 켜기만 해도 동공이 부들부들 흔들흔들 했던 내가 

짜치는 업무 하기 싫어서 툴 만들어달라고 징징 거리고 그걸 기어코 다 따라써서 뭔가 구동되게 만들다니. 

용됐구나 싶었다.

앞으로도 남은 자바 수업 열심히 들어서 나중엔 이런건 나 혼자도 만들어볼수 있으면 좋겠다. 이런 약간 희망사항 떠올리며 헤헤거리다가 

배포의 영역은 또 다르다는것을 실감했다. 

여태까지 일단 ai에게 전적으로 매달렸기때문에 .exe 만드는것도 ai에게 의존했다. 

코드를 작성하는것은 생각보다 직관적인일이지만

배포의 경우, 여러가지 환경을 고려해야 하기 때문에 (아마도...?) 초보자에게 디렉션을 주기 쉽지 않았던 것 같다.

그래서 엄청 뺑뺑이 돎... ㅅㅂ.. 

 

일단 ai와 대화를 나누며 아래가 가능하다는걸 알게됐다. 

 

1. 코드를 완성하면 .exe 로 구현 가능.
2. .exe 단일 파일로 구성되어있음 (설치 불필요)
3. .exe 하나로 다른 컴터에 옮겨가도 그냥 실행 가능

 

그리하여 .exe 파일을 위한 겁나 긴 여정이 시작됌. 

 

일단 .jar 파일이 필요하다. 

 

file-export -[Java] 폴더에서 [Runnable JAR file]선택 - [Next]  선택 

Launch configuration에서 내 App 선택

Export destination에서 export 경로 선택 (나는 desktop)

 Library handling에서  [Package required libraries into generated JAR] 을 선택하라고 AI가 제안 했다 

(참고로 default 값은 [Extract required libraries into generated JAR]) 

그리고 Finish를 누르면 바탕화면에 파일이 하나 생긴다. 

 

 

1. WiX 없음

.jar 파일을 jpackage로 명령 실행하는 방법이다. 

(1) 가장먼저 java 버전을 먼저 확인하던데 cmd에서 아래 명령어 친다.

 

java -version

 

그럼 아래와 같이 뜨는데,  왜인지는 모르지만 하여간 ai에게 합격 통보를 받았다. 

openjdk version "17.0.0.1" 2024-07-02 
OpenJDK Runtime Environment (build 17.0.0.1+2-3) 
OpenJDK 64-Bit Server VM (build 17.0.0.1 +2-3, mixed mode, sharing)

 

 

(2) 그 다음 .jar 파일이 있는 desktop 디렉터리에서 아래 명령어 친다. 

jpackage --input . --name BookCounter --main-jar BookCounter.jar --main-class App --type exe

cmd에서는 오타 한번나면 망... 

일부러 손에 좀 익히려고 손으로 쳤는데 계속 오타잼...... ㅎ

 

하여간 굳이 굳이 설명하자면 아래와 같다. 

# 명령어 의미
1  --input . 현재 폴더(바탕화면) 사용
2 --name BookCounter 프로그램 이름
3 --main-jar BookCounter.jar 실행할 jar 파일
4 --main-class App 메인 클래스 이름
5 --type exe 윈도우 exe 생성

 

 

하지만 곧 아래 메시지가 뜨고

Can not find WiX tools (light.exe, candle.exe)
ownload WiX 3.0 or later from https://wixtoolset.org and add it to the PATH
Error: Invalid or unsupported type: [exe]

 

 

대충 WiX Toolset이 없어서 .exe 만들기 불가능하다는 뜻. 

ai는 여기서 '설치마법사'를 원하는게 아니라 '그냥 실행 가능한 포터블 앱' 아니냐. 

형태 .exe app-image
생성 설치 프로그램 생성  실행 가능한 폴더 생성
의미 WiX 필요 WiX 불필요

 

그니까 그냥 .exe 말고 app-image 형태로 만들자고 제안

 

 

2. .exe 포기 , app-image로 가즈아 

 

app-image 형태로 만드는 명령어는 아래와 같다고 함

jpackage --input . --name BookCounter --main-jar BookCounter.jar --main-class App --type app-image

 

 

그랬더니 바탕화면에 생겼어요

폴더가 생겼어요. 

BookCounter라는 폴더가 생겼는데

그안에  폴더 두개, 파일 두개 들어 있음

-app[folder]
-runtime[folder]
-BookCounter.exe
-BookCounter.

 

근데 일단 문제점. 

(1) BookCounter.exe 클릭해도 실행 안됌. 아무 움직임이 없음. 작업상태창에 가도 아무런 미동 없음

(2) app 속에 들어가면 내 바탕화면 위에 있는 내 개인적인 파일이 복사되어있으며

(3) app 속에 들어가면 BookCounter폴더있고, BookCounter폴더에는 app 폴더가 있고 끝도 없이 폴더들이 자리하고 있으며 app 폴더를 열 때마다 내 개인적인 파일이 복사되어있음...  (ai는 그걸 재귀라고 표현함) 

(4) 아니 근데 이게 지워지지도 않음. 

 

 

그래서 일단 두가지 문제를 찾음.

(1) 내 파일이 계속 복사되는건 .jar 파일을 데스크탑에 둔 채로 .exe 만들려고 해서 그럼. 그래서 아예 폴더하나를 만들어서 그 안에 .jar 파일을 넣고 그 안에서 .exe 파일  생성한다. 

(2) 'compiled by a more recent version of Java Runtime'

프로그램으로 만든 자바 버전과 실행하는 자바 버전이 차이가 있어서 실행이 안된다는 의미. 

✅  project-properties 들어가서 Java Compiler - compiler compliance leve을 17로 변경 (현재 21) - apply and close

✅  project - clean (그 전 빌드 찌꺼기 정리) 

✅  file -export

 

export 할 때 왜 인지 이설정을 되게 강조

 

 

✅ 이후 cmd에서 아래 명령어로 테스트

java -jar BookCounter.jar

 

 

이렇게 치니 cmd의 창과 별도로 내 프로그램이 실행됐따!!

결국 프로그램이나 코드 문제는 아니고 path 문제거나 설정이거나 하여간다른 문제인 것. 

 

그리고 실행은 됐지만,   이런식으로 실무에서 사용하는것은 애매하다고 판단. 

 

(3) 패쓰 문제일지도 모른다

일단 조건을 바꿔가며 다시 해보자.

그래서 갖가지 상황을 바꿔가며 아래명령어로 .exe 파일을 생성을 하는데

jpackage --input . --name BookCounter --main-jar BookCounter.jar --main-class App --type app-image

 

1. desktop에서 생성

2. desktop 안에 폴더 하나 만들고 그 안애 생성

3. 가장 위에 있는 상위 디렉터리 c:\ 에서 폴더 하나 만들고 생성

기타 등등 하는데 실행은 되지않고 아래와 같은 문제점은 계속 발생함. 

 

- 계속 폴더속 폴더속 폴더 (총 2백 5십 몇개) -- 폴더가 오조오억개 생김
- 실제 파일 윈도우에서 클릭으로는 실행 안됌
- 실패하면 해당 폴더를 지우고 다시 해야되는데 삭제시 컴터 버퍼
- 그리고 무엇보다도 뭐 jar 파일을 겹치지 않게 해야된다나. 계속 export 새로 함

 

반복되는 같은 결과에 지쳐갈 때 쯤

그냥 WiX 깔면 안될까 스치듯 ai에게 물어봄

그러니까

'너는 그게 필요할거같냐 너 그냥 단일 .exe 쓰고싶은거 아니었냐'

'.exe 하고싶었으면 파이썬이나 C++ 하지 그랬냐' 

갑분 가스라이팅 시도

 

'주둥이만 살았.... 다는 점을 인간에게 잘 배웠구나' 라고 감탄하며 

하나도 도움안되는 니놈새끼야 난 이만 할련다 하고 gg 치니 

ai 마지막 한발 

 

'input과 output을 분리해야 한다'며 , 

'출력용 폴더를 따로 만들고 진행하자'고 한다. 그리고 아래 명령어를 알려줬지만

jpackage --input C:\TempDeploy --dest C:\Output --name BookCounter --main-jar BookCounter.jar --main-class App --type app-image

 

 

 

 

이러고 이불빨래 하러 감. 

 


 

이불빨래 하러 가는길에 

파이썬은 .exe 되는거고 

java는 안되나. 

java를 웹으로 많이 사용하는데에는 이유가 있었구만

뭔가 구동하려면 자바를 밑에 깔아놓고 구동시킬수밖에 없는건 큰 단점인데. 

이걸 어떻게 극복하지? 

후. 그냥 일단 처음 만든거니까 욕심 버리고 좀 번거롭더라도 java로 돌리고 

앞으로 다른거 만들면서 또 다른 시도 해볼까. 


와 근데 정말 쉽지는 않구나. 

앞으로 갈길 엄청 멀게 느껴짐

 

근데 머 어차피 

코드도 써봤고, 

내가 원하는 기능을 구현도 해봤고, 

ai 가 거기에다 덧붙여서 이것저것 또 알려주고 

그 코드 연구 하는것만 해도 엄청난 성과다 사실

단일 .exe 파일 생성, 클릭 한번으로 실행 이라는 최종 목적 달성 만 안되었을 뿐이지, 

얻은건 많아. 

별 생각 다하며 빨래 다 함. 

 

그리고 집에 와서 혹시나해서 검색해봤는데 

 

 

 

뭔가 많이 뜨는거임. 

JAVA로도 .exe 만드는 사례가 아예 없지는 않구나. 

하고 들어갔는데

 

결론

 

5분짜리 영상 2개 보고 .exe 생성 끝.

(https://www.youtube.com/watch?v=TSZBQfirRvA)

(https://www.youtube.com/watch?v=Z0ZyAV0J220)

 

자바코드를 .exe 생성하기? 쌉가넝하다. (Launch4j 사용)

 

세상에 이렇게 간단하게 됐다.

 

 

하지만 또 이게 회사컴 (똥컴)에서 작동을 할 지 안할지는 또 모르지. 

 

 

 

 


 

 

 

여튼 결론이 뭐다? 

북카운트 기능 구현해보고 

. exe 만들어 봄. 

 

 

 

느낀점

재밌음

내가 잘 모르면 ai도 도와줄 수 없음 

세상은 넓고 덕후들은 많음. 컴덕들 고마워유.

코드 쓰는거랑 로직짜는거랑 배포의세계는 각각 다른세계~

갈 길 먼건 맞는데 못 갈 건 또 아님~

일단 자바 공부 열심히 하자

수고링

 

야르~~

 

'콤퓨타 > 뚝딱뚝딱' 카테고리의 다른 글

[Book Counter] 코드작성  (0) 2026.05.23
02. Emo 창 만들기 (Swing)  (2) 2025.08.11
01. EmoPro 개요  (4) 2025.08.11