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

๐ŸŽ ํŒจํ‚ค์ง€

ํŒจํ‚ค์ง€(package)๋ž€, ํด๋ž˜์Šค ๋ฌถ์Œ์ด๋‹ค.
ํŒจํ‚ค์ง€์—๋Š” ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„œ๋กœ ๊ด€๋ จ๋œ ํด๋ž˜์Šค๋“ค๋ผ๋ฆฌ ๊ทธ๋ฃน ๋‹จ์œ„๋กœ ๋ฌถ์–ด ๋†“์Œ์œผ๋กœ์จ ํด๋ž˜์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ™์€ ์ด๋ฆ„์˜ ํด๋ž˜์Šค์ผ ์ง€๋ผ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์„œ,
๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐœ๋ฐœํ•œ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ์ถฉ๋Œํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํด๋ž˜์Šค๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ํด๋ž˜์ŠคํŒŒ์ผ(*.class)์ธ ๊ฒƒ๊ณผ ๊ฐ™์ด ํŒจํ‚ค์ง€๋Š” ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, java.lang.String ํด๋ž˜์Šค๋Š” ๋””๋ ‰ํ† ๋ฆฌ java์˜ ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ์ธ lang์— ์†ํ•œ String.class ํŒŒ์ผ์ด๋‹ค.

 

๐Ÿงก ํ•˜๋‚˜์˜ ์†Œ์ŠคํŒŒ์ผ์—๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์žฅ์œผ๋กœ ๋‹จ ํ•œ๋ฒˆ์˜ ํŒจํ‚ค์ง€ ์„ ์–ธ๋งŒ์„ ํ—ˆ์šฉํ•œ๋‹ค.
๐Ÿงก ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€์— ์†ํ•ด์•ผํ•œ๋‹ค.
๐Ÿงก ํŒจํ‚ค์ง€๋Š” ์ (.)์„ ๊ตฌ๋ถ„์ž๋กœ ํ•˜์—ฌ ๊ณ„์ธต๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
๐Ÿงก ํŒจํ‚ค์ง€๋Š” ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํด๋ž˜์Šค ํŒŒ์ผ(.class)์„ ํฌํ•จํ•˜๋Š” ํ•˜๋‚˜์˜ ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

ํŒจํ‚ค์ง€์˜ ์„ ์–ธ

ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์†Œ์ŠคํŒŒ์ผ(.java)์˜ ๋งจ ์œ„์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•œ ์ค„๋งŒ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

package ํŒจํ‚ค์ง€๋ช…;

ํด๋ž˜์Šค๋ช…๊ณผ ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์†Œ๋ฌธ์ž๋กœ ํ•˜๋Š” ๊ฒƒ์„ ์›์น™์œผ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค.

๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด์•ผํ•œ๋‹ค.
์†Œ์ŠคํŒŒ์ผ์— ์ž์‹ ์ด ์†ํ•  ํŒจํ‚ค์ง€๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ์ž๋™์ ์œผ๋กœ ์ด๋ฆ„ ์—†๋Š” ํŒจํ‚ค์ง€์— ์†ํ•˜๊ฒŒ ๋œ๋‹ค.

๐ŸŽ import ๋ฌธ

import๋ฌธ์€ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์†Œ์ŠคํŒŒ์ผ์— ์‚ฌ์šฉ๋œ ํด๋ž˜์Šค์˜ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

import ๋ฌธ์˜ ์„ ์–ธ

๋ชจ๋“  ์†Œ์ŠคํŒŒ์ผ(*.java)์—์„œ import ๋ฌธ์€ package ๋ฌธ ๋‹ค์Œ์—, ๊ทธ๋ฆฌ๊ณ  ํด๋ž˜์Šค ์„ ์–ธ๋ฌธ ์ด์ „์— ์œ„์น˜ํ•ด์•ผํ•œ๋‹ค.
import๋ฌธ์€ package ๋ฌธ๊ณผ ๋‹ฌ๋ฆฌ ํ•œ ์†Œ์ŠคํŒŒ์ผ์— ์—ฌ๋Ÿฌ ๋ฒˆ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

import ํŒจํ‚ค์ง€๋ช….ํด๋ž˜์Šค๋ช…;
or
import ํŒจํ‚ค์ง€๋ช….*; // ์ง€์ •๋œ ํŒจํ‚ค์ง€์— ์†ํ•˜๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ํŒจํ‚ค์ง€๋ช… ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

static import ๋ฌธ

import ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ž˜์Šค์˜ ํŒจํ‚ค์ง€๋ช…์„ ์ƒ๋žตํ•  ์ˆ˜ ์ž‡๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด static import ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด static ๋ฉค๋ฒ„๋ฅผ ํ˜ธ์ถœํ•  ๋–„ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

import static java.lang.Integer.*;
import static java.lang.Math.random;
import static java.lang.System.out;
out.println(random());
// System.out.println(Math.random());

๐ŸŽ CLASSPATH

ํด๋ž˜์ŠคํŒจ์Šค๋Š” ์ปดํŒŒ์ผ๋Ÿฌ(javac.exe)๋‚˜ JVM๋“ฑ์ด ํด๋ž˜์Šค ์œ„์น˜๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋กœ์ด๋‹ค.

 

๐Ÿ“ข J2JDK ๋ฒ„์ „ ๋ถ€ํ„ฐ๋Š” /jre/lib/ext ํด๋”์— ํ•„์š”ํ•œ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ณต์‚ฌํ•ด๋†“์œผ๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์—ฌ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด ์„ค์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

JAVA ์Šคํ„ฐ๋”” 1์ฃผ์ฐจ์—์„œ ๊ณต๋ถ€ํ–ˆ๋˜ JVM ๋™์ž‘๊ณผ์ •์„ ๋‹ค์‹œ ์ƒ๊ธฐ์‹œ์ผœ๋ณด์ž.
javac๋กœ .java ํŒŒ์ผ์„ .class ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ ์‹œ์ผœ์คฌ๊ณ ,
java๋กœ ํ•ด๋‹น ํด๋ž˜์Šค ํŒŒ์ผ์„ ์‹คํ–‰์‹œ์ผœ ์คฌ๋‹ค.
์ด ๋•Œ, ์ž๋ฐ”๋Š” ์ด ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ classpath ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

ํด๋ž˜์Šค ํŒจ์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • CLASSPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์‚ฌ์šฉ
  • java runtime์— -classpath ์˜ต์…˜ ์‚ฌ์šฉ

CLASSPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์‚ฌ์šฉ

์œˆ๋„์šฐ์—์„ 
์ œ์–ดํŒ - ์‹œ์Šคํ…œ - ๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ • - ํ™˜๊ฒฝ๋ณ€์ˆ˜ - ์ƒˆ๋กœ๋งŒ๋“ค๊ธฐ์—์„œ
CLASSPATH๋ผ๊ณ  ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ 
๋ณ€์ˆ˜ ๊ฐ’์„ JAVA_HOME ์•„๋ž˜์˜ lib ํด๋”๋กœ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

classpath๊ฐ€ ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด, ์ฝ”๋ฉ˜๋“œ ์ฐฝ์—์„œ
echo %classpath% ๋ผ๊ณ  ์ณ๋ณด๋ฉด ๋œ๋‹ค.

java runtime์— -classpath ์˜ต์…˜ ์‚ฌ์šฉ

-classpath๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ปดํŒŒ์ผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์ฐธ์กฐํ•  ํด๋ž˜์Šค ํŒŒ์ผ๋“ค์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์ปดํŒŒ์ผ ์‹œ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ์˜ต์…˜์ด๋‹ค. -cp๋ผ๊ณ  ์จ์ค˜๋„ ๋œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด,
Hello.java ํŒŒ์ผ์ด C:\Java ๋””๋ ‰ํ† ๋ฆฌ์— ์กด์žฌํ•˜๊ณ ,
ํ•„์š”ํ•œ ํด๋ž˜์Šค ํŒŒ์ผ๋“ค์ด C:\Java\Engclasses์— ์œ„์น˜ํ•œ๋‹ค๋ฉด
javac -classpath CL\Java\EngClasses C:\Java\Hello.java๋กœ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋งŒ์•ฝ ์ฐธ์กฐํ•  ํด๋ž˜์Šค ํŒŒ์ผ๋“ค์ด ๊ทธ ์™ธ์˜ ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ํ˜„ ๋””๋ ‰ํ† ๋ฆฌ์—๋„ ์กด์žฌํ•œ๋‹ค๋ฉด,
javac -classpath .;C:\Java\Engclasses;C;\Java\Korclasses C:\Java\Hello.java ๋กœ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
์œ„์™€ ๊ฐ™์ด ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
(.์šด ํ˜„ ๋””๋ ‰ํ† ๋ฆฌ, ..์€ ํ˜„ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.)

 

์ถœ์ฒ˜

https://kils-log-of-develop.tistory.com/430#%ED%81%B4%EB%9E%98%EC%8A%A4%ED%8C%A8%EC%8A%A4

์ž๋ฐ”์˜ ์ •์„ (๋„์šฐ์ถœํŒ, ๋‚จ๊ถ ์„ฑ ์ €)

 

๋„ค์ด๋ฒ„๋ฐด๋“œ๋„ค์ด๋ฒ„๋ธ”๋กœ๊ทธํ•€ํ„ฐ๋ ˆ์ŠคํŠธํ…”๋ ˆ๊ทธ๋žจ๋งํฌ๋“œ์ธํฌ์ผ“๋ ˆ๋”ง์ด๋ฉ”์ผ

Seize the day!

Spring MVC | Spring Boot | Spring Security | Mysql | Oracle | PostgreSQL | Vue.js | Nuxt.js | React.js | TypeScript | JSP | Frontend | Backend | Full Stack | ์ž๊ธฐ๊ณ„๋ฐœ | ๋ฏธ๋ผํด ๋ชจ๋‹ | ์ผ์ƒ