JENV บริหารจัดการ Multiple versions of JAVA on one Machine
ความวุ่นวายกับการต้องคอยมาจัดการสลับ สับเปลี่ยนเวอร์ชั่นของ Java ในเครื่องของคุณ ถ้าคุณมี Applications ที่ต้องใช้ Java ต่าง ๆ…
JENV บริหารจัดการ Multiple versions of JAVA on one Machine
ความวุ่นวายกับการต้องคอยมาจัดการสลับ สับเปลี่ยนเวอร์ชั่นของ Java ในเครื่องของคุณ ถ้าคุณมี Applications ที่ต้องใช้ Java ต่าง ๆ หลายเวอร์ชั่นเพื่อใช้ในการรันโค๊ดของคุณ จะพบกับการเรียกหา java compiler ที่ต่างเวอร์ชั่นกันเพราะ default java ของเครื่องกำหนดไว้ไม่ตรงกับโค๊ดของคุณที่กำลังต้องการสั่งให้โค๊ดของคุณทำงาน เช่น ปัจจุบันเครื่องของคุณกำหนด default java ไว้เป็น jdk 21 แต่โค๊ดของคุณกำลังเรียกหา jdk 11 เพื่อสั่งโค๊ดของคุณให้รัน คุณต้องหาทางสลับกำหนด default version ใหม่ให้เป็น jdk 11 ปัญหาเริ่มสะสม ผมว่าต้องมีคนหงุดหงิดแบบผมแน่ ๆ ทำไมไม่มีใครสักคนทำอะไรเพื่อมาแก้ปัญหาเหล่านี้เสียที

ขออ้างถึง NodeJS สักหน่อย
ผมเป็นคนที่ผมใช้ NodeJS เพื่อโค๊ดงาน เร่ง ๆ ไว ๆ ด่วน ๆ NodeJS ก็เป็นอีกภาษาที่มีความหลากหลายเรื่องเวอร์ชั่น NVM ที่เป็นสิ่งมาช่วยชีวิตเพื่อทำให้อะไร ๆ มันดูง่ายขึ้น พอกลับมามอง java ทำไมไม่มีแบบนี้บ้าง จนกระทั่ง…
JENV ไง เครื่องมือมาช่วยนักพัฒนาสาย JAVA
jEnv เป็นเครื่องมือที่มาช่วยบริหารจัดการ Java หลาย ๆ เวอร์ชั่นในเครื่องของคุณให้สลับสับเปลี่ยนได้ง่าย ๆ เพียงคำสั่งเดียว (JAVA_HOME ที่ต้องคอยมาสลับสับเปลี่ยนทุกครั้งที่อยากจะกำหนด default version จะไม่ต้องมาเปลี่ยนเองแล้ว)
JENV ติดตั้งและ ใช้งานอย่างไร
- ติดตั้งผ่าน homebrew หรือ Linux / OS X ก็ได้มี 2 ทางเลือก
// homebrew
$ brew install jenv
// Linux / OS X
$ git clone https://github.com/jenv/jenv.git ~/.jenv
- ตั้งค่า user profile (.zshrc) และ ติดตั้ง plugin
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(jenv init -)"' >> ~/.zshrc
$ eval "$(jenv init -)"
$ jenv enable-plugin export
$ exec $SHELL -l
- ติดตั้ง jdk 11, 17
$ brew install openjdk@11
$ brew install openjdk@17
- เพิ่ม jdk 11, 17 ให้ jenv
$ jenv add /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk/Contents/Home/
$ jenv add /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home/
- ตรวจสอบ เวอร์ชั่นทั้งหมดที่ jenv รู้จัก
$ jenv versions
system
11
11.0
11.0.25
17
17.0
17.0.13
* openjdk64-11.0.25 (set by /Users/poolsawat.api/.jenv/version)
openjdk64-17.0.13
- กำหนด jenv default java แบบ global (jdk 11)
$ jenv global openjdk64-11.0.25
6.1 หรือจะกำหนดแบบ local ก็สามารถทำได้ (jenv จะทำการสร้าง .java-version ใน project และเมื่อ jenv เจอ .java-version ก็จะเลือกใช้ตาม version ที่กำหนด)
$ jenv local openjdk64-11.0.25
- ตรวจสอบ default java version ของเครื่อง ณ ปัจจุบัน
$ java -version
แต่ในข้างครั้งอาจจะเจอปัญว่ากำหนด jenv global แล้วแต่ ตรวจสอบ java -version ไม่เปลี่ยนตาม อาจจะเกิดจากปัญหาตั้งค่า jenv ที่ไม่สมบูรณ์ ให้ลองตรวจสอบ ด้วยคำสั่งนี้
$ jenv doctor
ถ้าเจอแบบนี้ [ERROR] แสดงว่า jenv ไม่พร้อมใช้งาน
[OK] JAVA_HOME variable probably set by jenv PROMPT
[ERROR] Java binary in path is not in the jenv shims.
[ERROR] Please check your path, or try using /path/to/java/home is not a valid path to java installation.
ให้ทำการแก้ไขด้วยวิธีนี้ (เพิ่ม ใน user profile .zshrc)
$ vi ~/.zshrc
// append this line to .zshrc file
$ export PATH="$HOME/.jenv/shims:$PATH"
$ source ~/.zshrc
จากนั้นตรวจสอบ jenv doctor อีกครั้ง ถ้าได้แบบนี้แสดงว่าพร้อมใช้งาน
[OK] JAVA_HOME variable probably set by jenv PROMPT
[OK] Java binaries in path are jenv shims
[OK] Jenv is correctly loaded
จากนั้นให้ลองตรวจสอบ java -version อีกครั้ง
$ java -version
openjdk version "11.0.25" 2024-10-15
OpenJDK Runtime Environment Homebrew (build 11.0.25+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.25+0, mixed mode)
เป็นอันเรียบร้อย jenv ของเราสามารถทำงานได้แล้ว สวดยวดไปเลย บทความนี้ฝากไว้เท่านี้ครับผม
메타데이터
- post_id
- 0812f8ced8fe
- slug
- jenv-บริหารจัดการ-multiple-versions-of-java-on-one-machine-0812f8ced8fe
- url
- https://medium.com/@poolsawat-com/jenv-%E0%B8%9A%E0%B8%A3%E0%B8%B4%E0%B8%AB%E0%B8%B2%E0%B8%A3%E0%B8%88%E0%B8%B1%E0%B8%94%E0%B8%81%E0%B8%B2%E0%B8%A3-multiple-versions-of-java-on-one-machine-0812f8ced8fe
- canonical_url
- https://medium.com/@poolsawat-com/jenv-%E0%B8%9A%E0%B8%A3%E0%B8%B4%E0%B8%AB%E0%B8%B2%E0%B8%A3%E0%B8%88%E0%B8%B1%E0%B8%94%E0%B8%81%E0%B8%B2%E0%B8%A3-multiple-versions-of-java-on-one-machine-0812f8ced8fe
- author_url
- https://medium.com/@poolsawat-com
- status
- ok
- fetched_at
- 2026-07-22 10:58:37