๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ/Linux & macOS

[Linux] ์šฐ๋ถ„ํˆฌ์— ์ž๋ฐ” ์„ค์น˜ํ•˜๊ธฐ

by HanaV 2023. 3. 30.
728x90

1. ์ €์žฅ์†Œ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ

์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๊น”๊ธฐ ์ „์— $sudo apt update && apt upgrade ๋กœ ํ•ญ์ƒ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด์ž. 

 

2. ์ž๋ฐ” Open JDK 17๋ฒ„์ „ ์„ค์น˜ํ•˜๊ธฐ

$sudo apt –y install openjdk-17-jdk ๋กœ ์ž๋ฐ” Open JDK 17 ๋ฒ„์ „์„ ์„ค์น˜๋ฅผ ํ•œ๋‹ค.

์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด, ์„ค์น˜๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ์„ ํ•ด๋ณด์ž.
$java –version ์€ ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹  ์„ค์น˜ ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ ,
$javac –version ์€ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์น˜ ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿผ ์ž๋ฐ”๊ฐ€ ์–ด๋””์— ์„ค์น˜๋œ ๊ฒƒ์ผ๊นŒ?
์ž๋ฐ” ์‹คํ–‰ํŒŒ์ผ์ด ์„ค์น˜๋œ ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด 
$which java ๋ฅผ ์ณ๋ณด๋ฉด /usr/bin/java ๋ผ๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋‚˜์˜จ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ฒฝ๋กœ๋Š” ์‹ฌ๋ณผ๋ฆญ๋งํฌ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ€์ƒ ์œ„์น˜์ด๊ณ , ์‹ค์ œ ๊ฒฝ๋กœ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” readlink ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

$readlink –f /usr/bin/java   or   $readlink -f $(which java)

์ž๋ฐ”๊ฐ€ ์„ค์น˜๋œ ์‹ค์ œ ๊ฒฝ๋กœ๋Š” /usr/lib/jvm/java-17-openjdk-amd64 ์ด๋‹ค.
์ž๋ฐ”์˜ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด $ls -al java ๋ฅผ ์ณ๋ณด๋ฉด ์ดˆ๋ก์ƒ‰ ๋งํฌ๋กœ ๋‚˜์˜จ๋‹ค.

 

3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •(๊ฐœ์ธ ๊ณ„์ •)

์ด์ œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์‹ค๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค. $vi .bashrc ๋กœ .bashrc ํŒŒ์ผ์„ ์—ด์–ด ๋งจ ๋ฐ‘์— ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด๋•Œ, ๋งจ ๋ฐ‘์œผ๋กœ ๊ฐ€๋Š” ๋‹จ์ถ•ํ‚ค๋Š” ] ํ‚ค๋ฅผ ๋‘๋ฒˆ ๋ˆŒ๋Ÿฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
   export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
   export PATH=$PATH:$JAVA_HOME/bin
   export CLASSPATH=$JAVA_HOME/lib:.:

๋‹ค ์„ค์ •ํ•˜์˜€์œผ๋ฉด :wq!๋กœ ์ €์žฅํ•˜๊ณ , $source .bashrc ๋กœ ๋ฐ”๋€ ํ™˜๊ฒฝ์„ ์…€์— ์ ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ž˜ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์œผ๋ฉด, $echo $CLASSPATH ๋ฅผ ์ž…๋ ฅํ•ด์„œ ์‹ค๊ฒฝ๋กœ๊ฐ€ ์ž˜ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

 

4. ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ์ž๋ฐ” ์„ค์น˜ํ•˜๊ธฐ

Java 11๋„ ๊น”์•„์„œ ์›ํ•  ๋•Œ ์†์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๋จผ์ € ์›ํ•˜๋Š” ๋ฒ„์ „์˜ ์ž๋ฐ”๋ฅผ ๋˜‘๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ๊น”์•„์ฃผ๋ฉด ๋œ๋‹ค.
์„ค์น˜๋œ ์ž๋ฐ”์˜ ์ข…๋ฅ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด๋Š” $update-alternatives --list java ์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ƒˆ๋กœ์šด ์ž๋ฐ”์˜ ์‹ค๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ, ๋‹ค์‹œ .bashrc๋กœ ๋“ค์–ด๊ฐ€์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค.
   
๋ณ€๊ฒฝ์ „ : /usr/lib/jvm/java-17-openjdk-amd64
   
๋ณ€๊ฒฝํ›„ : $(readlink –f $(which java) | sed "s:/bin/java::")

๊ทธ๋Ÿผ ๋‘ ๊ฐœ์˜ ์ž๋ฐ” ๋ฒ„์ „์ด ์„ค์น˜๋œ ๊ฒƒ์ด๋‹ค.

์ž๋ฐ” ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด,

$sudo update-alternatives --config java
$sudo update-alternatives --config javac

๋กœ ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹ ๊ณผ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋‘˜ ๋‹ค ๋ฐ”๊ฟ”์ฃผ๊ณ  $source .bashrc ๋กœ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

๋ฒ„์ „์„ ํ™•์ธํ•ด๋ณด๋ฉด ์ž˜ ๋ฐ”๋€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

5. HelloWorld.java ๋งŒ๋“ค์–ด๋ณด๊ธฐ

๋‹ค์Œ์€ ์ •๋ง ๋งŽ์ด ์“ฐ์ด๋Š” ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์ค‘ ์ผ๋ถ€๋‹ค.

mkdir ์ด๋ฆ„: ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งŒ๋“ค๊ธฐ
rm -r ์ด๋ฆ„: ๋””๋ ‰ํ„ฐ๋ฆฌ ์‚ญ์ œํ•˜๊ธฐ
ls: ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ ๋ณด์ด๊ธฐ
ls -al: ํŒŒ์ผ์˜ ์‚ฌ์šฉ๊ถŒํ•œ๊นŒ์ง€ ๊ฐ™์ด ๋ณด๊ธฐ
vi: ํŽธ์ง‘๊ธฐ ๋ช…๋ น์–ด

์ผ๋‹จ ๋‚˜๋Š” JavaStudy๋ผ๋Š” ํด๋” ์•ˆ์— Example01 ํด๋”์— HelloWorld.java๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

$mkdir JavaStudy : JavaStudy ๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ
$cd JavaStudy : JavaStudy ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๊ฒฝ๋กœ ์ด๋™ (Tabํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ผ๋ถ€๋งŒ ์ ์–ด๋„ ์ž๋™์™„์„ฑ๋œ๋‹ค)
$mkdir Example01 : Example01 ์ด๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ
$ls : ํ˜„์žฌ ์žˆ๋Š” JavaStudy์— ์žˆ๋Š” ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ ํ™•์ธ
$cd Example01 : Example01 ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
$vi HelloWorld.java : HelloWorld.java ๋ผ๋Š” ํŒŒ์ผ ์ƒ์„ฑ
๊ทธ๋ฆฌ๊ณ  HelloWorld.java์— ์•„๋ž˜์™€ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ €์žฅํ•˜์˜€๋‹ค.

์ด์ œ ํŒŒ์ผ์„ ์ปดํŒŒ์ผ์„ ํ•˜๋ฉด ๋˜๋Š”๋ฐ, ํŽธ์˜์ƒ JavaStudy์— classes๋ผ๋Š” ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ๊ฑฐ๊ธฐ๋‹ค๊ฐ€ ์ปดํŒŒ์ผ์„ ํ•˜๊ฒ ๋‹ค.
์ปดํŒŒ์ผํ•˜๋Š” ๊ธฐ๋ณธ ๋ช…๋ น์–ด๋Š” $javac ํŒŒ์ผ ์ด๋ฆ„ ์ธ๋ฐ, ๋‚œ ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํด๋”์— ์ปดํŒŒ์ผ์„ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์‚ฌ์ด์— -d ์›ํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜์˜€๋‹ค.

$javac -d ../classes/ HelloWorld.java : HelloWorld.java ๋ผ๋Š” ํŒŒ์ผ์„ ์ปดํŒŒ์ผ์„ ํ• ๊ฑด๋ฐ, ์ €์žฅ ์œ„์น˜๋Š” ํ˜„์žฌ ์œ„์น˜์—์„œ ํ•˜๋‚˜ ์ด์ „์œผ๋กœ ๊ฐ€์„œ(..) classes๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ

์‹ค์ œ๋กœ ํ™•์ธ์„ ํ•ด๋ณด๋ฉด classes ๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ƒ๊ฒผ๊ณ , ๊ทธ ์•ˆ์— ์ปดํŒŒ์ผ๋œ HelloWorld.class ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฒ•์€ ๊ทธ๋ƒฅ java ํŒŒ์ผ๋ช… ์„ ์ ์œผ๋ฉด ๋œ๋‹ค.

Hello World!

 

 

728x90

"); wcs_do();