๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

eclipse๋กœ jar ํŒŒ์ผ ์‹คํ–‰ํ•˜๊ธฐ

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 1. 6.

์ด๋ฒˆ์— eclipse๋กœ jar ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์„œ ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ํ•ด๋ณด๋Š” ์‹ค์Šต์„ ํ–ˆ๋‹ค.

 

์šฐ์„  ์ธํ…”๋ฆฌ์ œ์ด์™€ ์ดํด๋ฆฝ์Šค ๋‘˜ ๋‹ค ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ

https://github.com/jasonpark112/eclipse-jar-libraryprogram

 

GitHub - jasonpark112/eclipse-jar-libraryprogram

Contribute to jasonpark112/eclipse-jar-libraryprogram development by creating an account on GitHub.

github.com

 

์—ฌ๊ธฐ์„œ ์ฐพ์•„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค ..

 

๊ธฐ๋Šฅ์€

 

 

์ด๋ ‡๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๋งŒ์•ฝ ์ž˜ ๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ์žฌ์ž…๋ ฅํ•˜๊ฒŒ ํ•ด๋†จ๋‹ค.

 

์ด์ œ ์ด๋ฅผ eclipse์—์„œ jarํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์‹คํ–‰ํ–ˆ๋Š”๋ฐ, ๊ณ„์†ํ•ด์„œ

 

 

์ด๋ ‡๊ฒŒ ํŒŒ์ผ์„ ๋ชป ์ฝ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

๋„๋Œ€์ฒด ์›์ธ์ด ๋ญ˜๊นŒ ํ•ด์„œ ์ฐพ์•„ ๋ณธ ๊ฒฐ๊ณผ,

 

๋ฆฌ์†Œ์Šค ํŒŒ์ผ์„ JAR์— ํฌํ•จ: Files.readAllLines ๋ฉ”์„œ๋“œ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ง์ ‘ ํŒŒ์ผ์„ ์ฝ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํŒŒ์ผ์ด JAR ๋‚ด๋ถ€์— ์žˆ๋‹ค๋ฉด, ์ผ๋ฐ˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ๋กœ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ํด๋ž˜์Šค ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, getClass().getResourceAsStream("/fileName")์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

JAR ํŒŒ์ผ ํ™˜๊ฒฝ (๋ฐฐํฌ ์‹œ)

  • ๋‚ด๋ถ€ ๊ตฌ์กฐ ์ ‘๊ทผ: JAR ํŒŒ์ผ ๋‚ด์—์„œ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. JAR ํŒŒ์ผ์€ ์••์ถ•๋œ ์•„์นด์ด๋ธŒ์ด๋ฉฐ, ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค ๋กœ๋”์˜ ๋™์ž‘: JAR ํŒŒ์ผ ๋‚ด์—์„œ ํด๋ž˜์Šค ๋กœ๋”๋Š” JAR ์•„์นด์ด๋ธŒ ๋‚ด์˜ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, resources/books.txt๋Š” JAR ๋‚ด๋ถ€์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์ดํด๋ฆฝ์Šค์—์„œ์™€ ๋‹ฌ๋ฆฌ, JAR ๋‚ด๋ถ€์—์„œ๋Š” src/main/resources ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

Files.readAllLines(path) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Path ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(์˜ˆ: ์ดํด๋ฆฝ์Šค)์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, JAR ํŒŒ์ผ ๋‚ด๋ถ€์—์„œ๋Š” ์ด ๋ฐฉ์‹์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. JAR ํŒŒ์ผ์€ ์••์ถ•๋œ ์•„์นด์ด๋ธŒ ํ˜•ํƒœ๋กœ, ์ „ํ†ต์ ์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, Files.readAllLines(path)์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JAR ํŒŒ์ผ ๋‚ด๋ถ€์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด FileNotFoundException ๋˜๋Š” ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

JAR ํŒŒ์ผ ๋‚ด๋ถ€์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

 

์ฆ‰, ํ•ต์‹ฌ์€

try (InputStream is = getClass().getClassLoader().getResourceAsStream("resources/" + fileName)) {

if (is == null) {

System.out.println("Failed to load resource: " + fileName);

return list;

}

์ด๊ณ ,

์ดํด๋ฆฝ์Šค๊ฐ€ ํŒŒ์ผ์„ ์ฝ๋Š” ๋ฐฉ๋ฒ•๊ณผ JAR์ด ํŒŒ์ผ์„ ์ฝ๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ „์ฒด์ ์œผ๋กœ ์ดํ•ด๋Š” ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ œ๋Œ€๋กœ ๋‹ค์‹œ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค !

 

์ดํ›„ jar์„ ์œ„ํ•œ ์ฝ”๋“œ๋Š”

 

https://github.com/jasonpark112/eclipse-jar-libraryprogram-2-

 

GitHub - jasonpark112/eclipse-jar-libraryprogram-2-

Contribute to jasonpark112/eclipse-jar-libraryprogram-2- development by creating an account on GitHub.

github.com

 

์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๊ณ , ์ดํด๋ฆฝ์Šค์—์„œ๋Š” ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๊ณ  ํ•˜์ง€๋งŒ, jar ์ด ํŒŒ์ผ์„ ์ฐพ๋Š” ๋ฐฉ์‹์—์„œ๋Š” ์ด ์ฝ”๋“œ๊ฐ€ ๋Œ์•„๊ฐ„๋‹ค.

 

์ด๋ฒˆ ๊ณ„๊ธฐ๋กœ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์ดํ•ด๋„๋ฅผ ๋†’์ผ ํ•„์š”๊ฐ€ ์žˆ์Œ์„ ์•Œ์•˜๋‹ค.

๋Œ“๊ธ€