Mac OS X และ Java หลายเวอร์ชัน


333

ฉันจะติดตั้งจาวาเพิ่มเติมบน MacOS ได้อย่างไร? ฉันติดตั้ง jdk8 และใช้งานได้ดี แต่ตอนนี้ฉันต้องการการติดตั้ง jdk7 เพื่อวัตถุประสงค์ในการพัฒนา เมื่อพยายามติดตั้งเวอร์ชันเก่าผ่านไฟล์ DMG ฉันได้รับคำเตือนว่ามี Java เวอร์ชันใหม่กว่าติดตั้งอยู่แล้วและตัวติดตั้งหยุดทำงาน

/usr/libexec/java_home -verbose
Matching Java Virtual Machines (1):
    1.8.0_20, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

   /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

วิธีการติดตั้ง jdk7 นอกเหนือจากนี้

ขอบคุณ
Dakky

คำตอบ:


493

วิธีที่สะอาดในการจัดการเวอร์ชัน Java หลายบน Mac Homebrewคือการใช้

และภายใน Homebrewใช้:

  • homebrew-cask เพื่อติดตั้งเวอร์ชันของ java
  • jenv เพื่อจัดการจาวาเวอร์ชันที่ติดตั้ง

ตามที่เห็นในhttp://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.htmlนี่คือขั้นตอนที่ต้องปฏิบัติ

  1. ติดตั้ง homebrew
  2. ติดตั้ง homebrew jenv
  3. ติดตั้ง homebrew-cask
  4. ติดตั้งจาวาเฉพาะรุ่นโดยใช้ cask (ดูวรรค "homebrew-cask version" ด้านล่าง)
  5. เพิ่มเวอร์ชันนี้สำหรับ jenv เพื่อจัดการ
  6. ตรวจสอบรุ่นที่จัดการอย่างถูกต้องโดย jenv
  7. ทำซ้ำขั้นตอนที่ 4 ถึง 6 สำหรับ Java แต่ละเวอร์ชันที่คุณต้องการ

เวอร์ชัน homebrew-cask

เพิ่มการhomebrew/cask-versionsแตะเพื่อ homebrew โดยใช้:

brew tap homebrew/cask-versions

จากนั้นคุณสามารถดูทุกรุ่นที่มี:

brew search java

จากนั้นคุณสามารถติดตั้งเวอร์ชันที่คุณต้องการ:

brew cask install java7
brew cask install java6

และเพิ่มให้จัดการโดย jenv ตามปกติ

jenv add <javaVersionPathHere>

ฉันคิดว่านี่เป็นวิธีที่สะอาดและง่ายที่สุดที่จะไปเกี่ยวกับเรื่องนี้


อีกสิ่งสำคัญที่ควรทราบตามที่กล่าวไว้ในMac OS X 10.6.7 Java Path Current JDK ทำให้เกิดความสับสน :

สำหรับ JDK ประเภทต่าง ๆ หรือการติดตั้งคุณจะมีเส้นทางที่แตกต่างกัน

คุณสามารถตรวจสอบเส้นทางของรุ่นที่ติดตั้งโดยใช้/usr/libexec/java_home -Vดูฉันจะตรวจสอบว่าติดตั้ง Java JDK บน Mac ได้อย่างไร

ใน Mac OS X Mavericks ฉันพบสิ่งต่อไปนี้:

1) ค่าเริ่มต้นของ JRE ในตัว: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2) JDK ที่ดาวน์โหลดจาก Apple: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

3) JDK ที่ดาวน์โหลดจาก Oracle: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


ทรัพยากร


16
เป็นการดีที่จะกล่าวถึงว่า homebrew-cask สามารถติดตั้งได้ด้วยคำสั่งbrew install caskroom/cask/brew-caskแทนที่จะbrew install caskเป็นปลั๊กอินของ Emacs
Unnawut

7
ฉันพบปัญหาเล็กน้อยในขณะที่ใช้งานโซลูชันนี้ซึ่งหนึ่งในนั้นคือการjenvส่งคืนNo such file or directory.ข้อผิดพลาด วิกินี้ช่วยแก้ปัญหาให้ฉันได้ github.com/gcuisinier/jenv/wiki/Trouble-Shooting
juil

10
ฉันจะเพิ่มว่าทุกการติดตั้ง Java จะอยู่ใน/Library/Java/JavaVirtualMachines/และเมื่อเพิ่มพวกเขากับคุณเพิ่มเส้นทางการมองเช่นนี้jenv add /Library/Java/JavaVirtualMachines/[specific-version]/Contents/Home/ไชโย!
Nikolay Tsenkov

14
ตั้งแต่วันที่ 23 มิ.ย. 2017 ฉันทำงานbrew cask search java7แต่ไม่พบ Cask สำหรับ "java7"
Mingliang Liu

4
@ MingliangLIU ใช่ฉันเช่นกัน ... มันแย่จริงๆ ฉันพบปัญหาเกี่ยวกับเรื่องนี้ใน Github พวกเขาพูดถึงการทำงานรอบ ๆ แต่ฉันไม่สามารถทำงานได้ ดังนั้นฉันจึงต้องลงมือทำ "วิธีใช้ด้วยตนเอง" ผ่านหน้าเว็บของ apple และ oracle ของ "Java version download and install" จากนั้นใช้/usr/libexec/java_home -Vเพื่อตรวจสอบเส้นทางที่ติดตั้งสิ่งเหล่านี้อีกครั้ง
เอเดรียนเป็น

304

ถอนการติดตั้ง jdk8 ติดตั้ง jdk7 จากนั้นติดตั้ง jdk8 อีกครั้ง

แนวทางของฉันในการสลับไปมาระหว่างพวกเขา (เป็น. โปรไฟล์):

export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)

alias java7='export JAVA_HOME=$JAVA_7_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'

#default java8
export JAVA_HOME=$JAVA_8_HOME

จากนั้นคุณสามารถพิมพ์java7หรือjava8เทอร์มินัลเพื่อสลับรุ่น

(แก้ไข: อัปเดตเพื่อเพิ่มการปรับปรุง Dylans สำหรับ Java 9)


18
จนถึงตอนนี้เป็นตัวเลือกที่ดีที่สุดสำหรับฉัน สามารถสลับเป็นเวอร์ชั่นใด ๆ ได้ง่ายๆด้วยคำสั่งง่ายๆ "java8" หรือ "java7" ขอบคุณสำหรับความช่วยเหลือ
MMHMasud

4
เยี่ยมมาก! :) และอื่น ๆ เช่นฉันคุณสามารถใช้: ls / Library / Java / JavaVirtualMachines เพื่อดูว่ามีรุ่นใดบ้าง จากนั้นคุณสามารถสลับรุ่น 1.8.x ที่แตกต่างกัน และคุณต้องเพิ่มการส่งออก PATH = $ JAVA_HOME / bin: $ PATH
Nico

4
ขอบคุณสำหรับสิ่งนี้ ฉันแค่อยากจะพูดถึงว่าฉันจัดการได้โดยติดตั้ง jdk7 หลังจาก jdk8 (ไม่จำเป็นต้องถอนการติดตั้ง jdk8)
ติตัส

6
Dunno ทำไมฉันถึงเสียเวลากับ jenv เพราะมันใช้งานได้และไม่เกะกะการเริ่มต้นเชลล์ของคุณด้วย 0.5s ด้วย jenv init
cvakiitho

2
หากคุณกำลังพยายามทำให้ java 9 ทำงานในลักษณะนี้อาร์กิวเมนต์ของรุ่นไปยัง java_home สำหรับ java 9 ควรเป็น9เช่นนั้นexport JAVA_9_HOME=$(/usr/libexec/java_home -v9)
Dylan Nissley

125

สำหรับ macOS Sierra 420

คู่มือนี้ปูด้วยหินจากแหล่งต่าง ๆ (ตอบกลับด้านบนเช่นเดียวกับโพสต์อื่น ๆ ) และทำงานได้สมบูรณ์แบบ

0. ถ้าคุณยังไม่ได้ติดตั้ง homebrew

ดูhttps://brew.sh/

1. ติดตั้ง jenv

brew install jenv

2. เพิ่ม jenv ไปยังโปรไฟล์ทุบตี

if which jenv > /dev/null; then eval "$(jenv init -)"; fi

3. เพิ่ม jenv ในเส้นทางของคุณ

export PATH="$HOME/.jenv/shims:$PATH"

4. แตะที่ "caskroom / เวอร์ชั่น"

FYI: "Tap" ขยายรายการของ repos ที่มีอยู่ซึ่งสามารถติดตั้งได้ด้านบนและเหนือรายการของ Repos ที่เป็นค่าเริ่มต้นของ Brew ที่มีอยู่

brew tap caskroom/versions

5. ติดตั้ง java เวอร์ชันล่าสุด

brew cask install java

6. ติดตั้ง java 6 (หรือ 7 หรือ 8 สิ่งที่คุณต้องการ)

brew cask install java6
#brew cask install java7
#brew cask install java8

? อาจปิดและรีสตาร์ท Terminal เพื่อให้เห็น ENV vars ใหม่ที่ได้รับการตั้งค่า

7. ตรวจสอบการติดตั้ง

ติดตั้ง Java เวอร์ชันทั้งหมดแล้ว: /Library/Java/JavaVirtualMachinesลองมาดูกัน

ls -la /Library/Java/JavaVirtualMachines

8. เพิ่มแต่ละพา ธ ให้ jenv หนึ่งครั้งต่อครั้ง

เราจำเป็นต้องเพิ่ม "/ Contents / Home" ในโฟลเดอร์ version คำเตือน: ใช้เส้นทางที่เกิดขึ้นจริงบนเครื่องของคุณ ... เหล่านี้เป็นเพียงตัวอย่างของ

jenv add /Library/Java/JavaVirtualMachines/1.6.0___EXAMPLE___/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk___EXAMPLE___/Contents/Home

9. ตรวจสอบว่า jenv ตกลงแล้วหรือยัง

jenv versions

10. ตั้งค่าเวอร์ชันจาวาให้ใช้ (กลมกลืน)

โดยที่ XX ตรงกับหนึ่งในรายการในรายการเวอร์ชันด้านบน

jenv global XX

ตรวจสอบเวอร์ชั่นของจาวา

java -version

ตรวจสอบรุ่น jenv

ควรระบุเวอร์ชันปัจจุบันที่ใช้กับเครื่องหมายดอกจัน

jenv versions

DONE


การอ้างอิงในอนาคตอย่างรวดเร็ว

เพื่อเปลี่ยนเวอร์ชั่นจาวา

... ดูรายการรุ่นจาวาที่มีอยู่

jenv versions

... จากนั้นที่ XX ตรงกับรายการในรายการด้านบน

jenv global XX

1
นอกจากนี้ให้รีสตาร์ทเครื่องของคุณหลังจากbrew cask install java*
บีบ

1
คำอธิบายที่ชัดเจนและยอดเยี่ยมทีละขั้นตอน
Ritesh Singh

1
ข้อผิดพลาด: ถัง 'java8' ไม่พร้อมใช้งาน: ไม่มีถังที่มีชื่อนี้อยู่
Alexey Sh

6
java8 / 9/10 arent พร้อมใช้งานอีกต่อไปในรูปแบบถัง ลองนี้แทน: "ติดตั้งถังเบียร์ adoptopenjdk / OpenJDK / adoptopenjdk8"
supi

1
brew tap caskroom/versionsควรเป็นbrew tap homebrew/cask-versions
Vyacheslav Cotruta

42

SDKMAN!เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการใช้ Java, Gradle, Groovy, Kotlin และเครื่องมือ JVM อื่น ๆ บน Mac OS หลายรุ่น เอกสารการติดตั้งและการใช้งานนั้นอยู่บนเว็บไซต์หลักอย่างชัดเจน

(ฉันไม่มีส่วนเกี่ยวข้องเพียงแค่ผู้ใช้ที่มีความสุข)

เป็นการใช้งานตัวอย่างถ้าฉันพิมพ์สิ่งต่อไปนี้ในหน้าต่างเทอร์มินัลมีรายการของ Java SDK เวอร์ชันที่มีอยู่ (แก้ไขเพื่อความกะทัดรัด):

$ sdk list java
Available Java Versions
   + 9ea170                                                                        
 > + 8u131                                                                         
     7u141-zulu                     

ที่นี่+หมายถึงว่ามีการติดตั้งเวอร์ชัน >หมายถึงเวอร์ชันที่ใช้งานอยู่ในปัจจุบัน วิธีติดตั้งเวอร์ชัน:

$ sdk install java 7u141-zulu

วิธีใช้เวอร์ชันในหน้าต่าง Terminal นี้:

$ sdk use java 9ea170

sdkman รองรับรุ่นที่ขึ้นต้นด้วย java 1.7 หากคุณยินดีที่จะใช้ java 1.6 วิธีนี้อาจไม่เหมาะกับคุณ
Aykut Akıncı

sdkman นั้นยอดเยี่ยม แต่พวกเขาไม่รองรับรุ่นที่เฉพาะเจาะจงภายในรุ่น ตัวอย่างเช่น Datastax Dev Center ใช้งานได้กับ 1.8.0_151 เท่านั้น แต่ฉันไม่สามารถระบุได้ด้วย sdkman หวังว่าพวกเขาจะเพิ่มรุ่นมากขึ้น
Eduardo Dennis

หากคุณมีรุ่นท้องถิ่นฉันคิดว่าคุณสามารถติดตั้งลงใน SDKMan - sdkman.io/usage#localversion (แต่ฉันไม่ได้ลองเลย)
Michael Easter

6

ตามที่พบในเว็บไซต์นี้ ดังนั้นเริ่มด้วยการติดตั้ง jEnv

  1. รันสิ่งนี้ในเทอร์มินัล

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
  2. เพิ่ม jEnv ไปยังโปรไฟล์ bash

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
  3. เมื่อคุณติดตั้ง jEnv เป็นครั้งแรกจะไม่มี JDK ใด ๆ ที่เกี่ยวข้อง

    ตัวอย่างเช่นฉันเพิ่งติดตั้ง JDK 8 แต่ jEnv ไม่ทราบเกี่ยวกับเรื่องนี้ วิธีตรวจสอบเวอร์ชั่นของ Java บน jEnv

    ในขณะนี้พบเฉพาะรุ่น Java (jre) ในระบบ *แสดงรุ่นที่เลือกในปัจจุบัน แตกต่างจาก rvm และ rbenv, jEnv ไม่สามารถติดตั้ง JDK ให้คุณได้ คุณต้องติดตั้ง JDK ด้วยตนเองจากเว็บไซต์ Oracle

  4. ติดตั้ง JDK 6 จากเว็บไซต์ Apple /System/Library/Java/JavaVirtualMachines/นี้จะติดตั้งใน Java เหตุผลที่เราติดตั้ง Java 6 จากเว็บไซต์ Apple คือ SUN ไม่ได้เกิดขึ้นกับ JDK 6 สำหรับ MAC ดังนั้น Apple จึงสร้าง / แก้ไขเวอร์ชันการปรับใช้ของตัวเอง

  5. ติดตั้ง JDK7 และ JDK8 ในทำนองเดียวกัน

  6. เพิ่ม JDKs ไปยัง jEnv

    JDK 6:

    JDK 7: http: //javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518ab9bc47d4.png

    JDK 8: http: //javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abb2c1217.png

  7. ตรวจสอบเวอร์ชั่นของจาวาที่ติดตั้งโดยใช้ jenv

    http: //javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abceb0deb.png

  8. ดังนั้นตอนนี้เรามี Java 3 เวอร์ชันในระบบของเรา หากต้องการตั้งค่าเวอร์ชันเริ่มต้นให้ใช้คำสั่ง

    jenv local <jenv version>

    ตัวอย่าง - ฉันต้องการ Jdk 1.6 เพื่อเริ่มต้น IntelliJ

    jenv local oracle64-1.6.0.65
  9. ตรวจสอบเวอร์ชั่นของจาวา

    java -version http: //javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abe376dd0.png

แค่นั้นแหละ. ตอนนี้เรามี java หลายเวอร์ชันและเราสามารถสลับระหว่างกันได้อย่างง่ายดาย jEnv ยังมีคุณสมบัติอื่น ๆ เช่น wrappers สำหรับ Gradle, Ant, Maven, ฯลฯ และความสามารถในการตั้งค่าตัวเลือก JVM ทั่วโลกหรือในพื้นที่ ตรวจสอบเอกสารประกอบสำหรับข้อมูลเพิ่มเติม


5
อย่าใส่ภาพคำสั่งของคุณมันเป็นการยากที่จะคัดลอก / วาง หากต้องการไฮไลต์คำสั่งให้ใช้ backticks "` "สำหรับคำเดียวหรือคำสั่งสั้น ๆ หรือเยื้องคำสั่งของคุณด้วย 4 ช่องว่างในบรรทัดของตัวเอง (หรือทวีคูณของ 4 ในรายการ)
เซกิ

1
ขอบคุณเซกิ ฉันพยายามโพสต์ภาพและใช้เวลานานในการจัดรูปแบบ แต่ไม่สามารถทำให้ถูกต้องได้ ขอบคุณที่แบ่งปันข้อมูล backticks
Dinesh Arora

4
ฉันคิดว่าคุณอาจใช้ภาพเดียวกันสี่ครั้ง
Ellen Spertus

5

ฉันพบตัวจัดการเวอร์ชัน Java นี้ชื่อJabbaเมื่อเร็ว ๆ นี้และการใช้งานคล้ายกับตัวจัดการเวอร์ชันของภาษาอื่น ๆ เช่น rvm (ruby), nvm (node), pyenv (python) เป็นต้นนอกจากนี้ยังเป็นแพลตฟอร์มข้ามดังนั้นแน่นอนว่าสามารถใช้งานได้ Mac

หลังจากการติดตั้งมันจะสร้าง dir ใน ~ / .jabba เพื่อวาง Java เวอร์ชันทั้งหมดที่คุณติดตั้ง มัน "รองรับการติดตั้ง Oracle JDK (ค่าเริ่มต้น) / เซิร์ฟเวอร์ JRE, Zulu OpenJDK (ตั้งแต่ 0.3.0), IBM SDK, Java Technology Edition (ตั้งแต่ 0.6.0) และจาก URL ที่กำหนดเอง"

การใช้งานพื้นฐานแสดงอยู่ใน Github สรุปอย่างย่อเพื่อเริ่มต้น:

curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh

# install Oracle JDK
jabba install 1.8 # "jabba use 1.8" will be called automatically  
jabba install 1.7 # "jabba use 1.7" will be called automatically 

# list all installed JDK's
jabba ls

# switch to a different version of JDK
jabba use 1.8

4

ฉันใช้ Mac OS X 10.9.5 นี่คือวิธีที่ฉันจัดการหลาย JDK / JRE บนเครื่องของฉันเมื่อฉันต้องการหนึ่งรุ่นเพื่อเรียกใช้แอปพลิเคชัน A และใช้เวอร์ชันอื่นสำหรับแอปพลิเคชัน B

ฉันสร้างสคริปต์ต่อไปนี้หลังจากได้รับความช่วยเหลือออนไลน์

#!bin/sh
function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/Library/Java/JavaVirtualMachines/'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk

ฉันใส่สคริปต์ด้านบนในไฟล์. profile เพียงแค่เปิดเทอร์มินัลให้พิมพ์ vi .profile ต่อท้ายสคริปต์ด้วยข้อมูลโค้ดด้านบนแล้วบันทึก เมื่อคุณพิมพ์ออกมาsource .profileสิ่งนี้จะเรียกใช้สคริปต์โปรไฟล์โดยไม่ต้องรีสตาร์ทเครื่อง ตอนนี้พิมพ์java -versionควรจะแสดง 1.7 เป็นรุ่นปัจจุบันของคุณ ถ้าคุณตั้งใจที่จะเปลี่ยนเป็น 1.8 แล้วแสดงความคิดเห็นบรรทัดsetjdk jdk1.7.0_15.jdkและ uncomment setjdk jdk1.8.0_60.jdkบรรทัด บันทึกสคริปต์และเรียกใช้อีกครั้งด้วยคำสั่งแหล่งที่มา ฉันใช้กลไกนี้เพื่อจัดการ JDK / JRE หลายรุ่นเมื่อฉันต้องคอมไพล์ Maven 2 โปรเจคที่ต่างกันซึ่งต้องการจาวาเวอร์ชันต่าง ๆ


3

Jenv บน Mac Sierra:

ถ้าไม่ทำงานหลังจากติดตั้งให้แก้ไขบั๊กนี้เพื่อเพิ่ม java executable ให้กับพา ธ

export PATH="$HOME/.jenv/shims:$PATH"

แม้ว่าeval "$(jenv init -)"จะสามารถทำงานนี้ได้ เหตุผลคือโฟลเดอร์ / bin ไม่ได้อยู่ที่นั่นอีกแล้วตามที่อธิบายไว้ในโฮมเพจ แต่โฟลเดอร์ shim ใช้เป็น / bin แทน

  • ตรวจสอบให้แน่ใจว่ามี ~ / .jenv
  • which java อาจพิมพ์ / Library / ...
  • jenv global 1.8
  • เปลือก jenv 1.8

ในที่สุดwhich javaให้คุณ:

/Users/xxxx/.jenv/shims/java


3

ในจิตวิญญาณเดียวกันกว่า @Vegard (น้ำหนักเบา):

  • ติดตั้ง JDK ที่ต้องการด้วย Homebrew
  • ใส่jdkฟังก์ชั่นทุบตีนี้และค่าเริ่มต้นในของคุณ.profile

    jdk() {
        version=$1
        export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
        java -version
     }
    
    export JAVA_HOME=$(/usr/libexec/java_home -v11); # Your default version
  • จากนั้นหากต้องการเปลี่ยน jdk ของคุณคุณสามารถทำได้

     jdk 9
     jdk 11
     jdk 13

ขึ้นอยู่กับhttps://github.com/AdoptOpenJDK/homebrew-openjdk


0

นี่คือรุ่น DRY เพิ่มเติมสำหรับทุบตี (ขึ้นอยู่กับคำตอบของ Vegard)

แทนที่ 1.7 และ 1.8 ด้วยเวอร์ชันที่คุณสนใจและคุณจะได้รับนามแฝงที่เรียกว่า 'javaX'; โดยที่ 'X' เป็นรุ่น java (7/8 ในตัวอย่างด้านล่าง) ที่จะช่วยให้คุณสลับรุ่นได้อย่างง่ายดาย

for version in 1.7 1.8; do
    v="${version: -1}"
    h=JAVA_"$v"_HOME

    export "$h"=$(/usr/libexec/java_home -v $version)

    alias "java$v"="export JAVA_HOME=\$$h"
done

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.