मैक ओएस एक्स और कई जावा संस्करण


333

मैं MacOS पर एक अतिरिक्त जावा कैसे स्थापित कर सकता हूं? मैंने jdk8 स्थापित किया है और यह ठीक काम करता है। लेकिन अब मुझे विकास के उद्देश्यों के लिए jdk7 की स्थापना की आवश्यकता है। डीएमजी फ़ाइल के माध्यम से पुराने संस्करण को स्थापित करने का प्रयास करते समय, मुझे एक चेतावनी मिलती है, कि पहले से ही जावा का एक नया संस्करण स्थापित है और इंस्टॉलर स्थापित हो गया है।

/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 कैसे स्थापित करें?

धन्यवाद
डकी

जवाबों:


493

मैक पर कई जावा संस्करणों का प्रबंधन करने का सबसे साफ तरीका है Homebrew

और भीतर Homebrew, उपयोग करें:

  • homebrew-cask जावा के संस्करणों को स्थापित करने के लिए
  • jenv जावा के स्थापित संस्करणों का प्रबंधन करने के लिए

जैसा कि http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html पर देखा गया है , ये अनुसरण करने के चरण हैं।

  1. होमब्रे स्थापित करें
  2. homebrew jenv स्थापित करें
  3. homebrew-cask स्थापित करें
  4. पीपा का उपयोग करके एक विशिष्ट जावा संस्करण स्थापित करें (नीचे "पैराग्राफ-पीपा संस्करण देखें" पैराग्राफ)
  5. इसे प्रबंधित करने के लिए जेनव के लिए इस संस्करण को जोड़ें
  6. संस्करण को सही ढंग से jenv द्वारा प्रबंधित किया गया है
  7. आपके द्वारा आवश्यक जावा के प्रत्येक संस्करण के लिए चरण 4 से 6 दोहराएं

homebrew- पीपा संस्करण

homebrew/cask-versionsहोमब्रे का उपयोग करके टैप को जोड़ें :

brew tap homebrew/cask-versions

तब आप उपलब्ध सभी संस्करणों को देख सकते हैं:

brew search java

तब आप उस संस्करण को स्थापित कर सकते हैं जिसे आप पसंद करते हैं:

brew cask install java7
brew cask install java6

और उन्हें हमेशा की तरह jenv द्वारा प्रबंधित करने के लिए जोड़ें।

jenv add <javaVersionPathHere>

मुझे लगता है कि यह इसके बारे में जाने का सबसे साफ और सरल तरीका है।


ध्यान देने योग्य एक और महत्वपूर्ण बात, जैसा कि मैक ओएस एक्स 10.6.7 जावा पथ करंट जेडीके में उल्लिखित है :

विभिन्न प्रकार के जेडीके या इंस्टॉलेशन के लिए, आपके पास अलग-अलग रास्ते होंगे

आप का उपयोग करके स्थापित संस्करणों के रास्तों की जांच कर सकते हैं /usr/libexec/java_home -V, देखें कि अगर मैक पर जावा JDK स्थापित है तो मैं कैसे जांच सकता हूं?

मैक ओएस एक्स मावेरिक्स पर, मैं निम्नलिखित पाया:

1) अंतर्निहित JRE डिफ़ॉल्ट: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2) Apple से डाउनलोड किए गए JDK: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

3) JDK Oracle से डाउनलोड किया गया: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


साधन


16
यह उल्लेख करना अच्छा होगा कि होमब्रेव-कास्क को कमांड के साथ स्थापित किया जा सकता है जिसके brew install caskroom/cask/brew-caskबजाय brew install caskएक एमएसीएस प्लगइन है।
उन्नाव

7
मैं इस समाधान को लागू करते समय कुछ समस्याओं में भाग गया, जिनमें से एक त्रुटि को jenvवापस करने के साथ था No such file or directory.। इस विकी ने मेरे लिए इसे हल करने में मदद की। github.com/gcuisinier/jenv/wiki/Trouble-Shooting
juil

10
मैं जोड़ूंगा कि सभी जावा इंस्टाल होंगे /Library/Java/JavaVirtualMachines/और जब jenv addआप उन्हें जोड़ते हैं तो इस तरह से पथ जोड़ते हैं /Library/Java/JavaVirtualMachines/[specific-version]/Contents/Home/। चीयर्स!
निकोले टसेनकोव

14
23 जून 2017 तक, मैं दौड़ता हूं brew cask search java7लेकिन "जावा 7" के लिए नो कास्क मिला।
मिंगलियन लियू

4
@MingliangLIU मुझे भी हाँ ... यह वास्तव में बेकार है। मुझे गितुब पर इस बारे में समस्याएँ मिलीं, उन्होंने कुछ कामों का उल्लेख किया था, लेकिन मुझे काम करने के लिए नहीं मिला। इसलिए मैंने इसे ऐप्पल और ओरेकल के "जावा वर्जन डाउनलोड" और "वेब पेज" स्थापित करने के माध्यम से "मैनुअल तरीका" करने के लिए समाप्त कर दिया। फिर /usr/libexec/java_home -Vउन रास्तों की दोबारा जांच करने के लिए जहां ये स्थापित किए गए थे।
Adrien Be

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 संस्करणों को स्विच करने के लिए टर्मिनल में ।

(संपादित करें: जावा 9 के लिए डायलन सुधार को जोड़ने के लिए अपडेट किया गया)


18
अब तक यह मेरे लिए सबसे अच्छा विकल्प है। आसानी से बस एक साधारण कमांड "java8" या "java7" के साथ किसी भी संस्करण पर जा सकते हैं। मदद के लिए धन्यवाद
MMHMasud

4
महान ! :) और मेरे जैसे अन्य के लिए आप उपयोग कर सकते हैं: ls / Library / Java / JavaVirtualMachines यह देखने के लिए कि कौन से संस्करण उपलब्ध हैं। फिर आप विभिन्न 1.8.x संस्करणों पर स्विच कर सकते हैं। और आपको एक्सपोर्ट PATH = $ JAVA_HOME / bin: $ PATH
Nico

4
इसके लिए धन्यवाद। मैं सिर्फ यह उल्लेख करना चाहता था कि मैं jdk8 के बाद jdk7 स्थापित करके ऐसा करने में कामयाब रहा हूं (jdk8 की स्थापना रद्द करने की कोई आवश्यकता नहीं है)।
टाइटस

6
डननो ने जेनेव के साथ मेरा समय क्यों बर्बाद किया, क्योंकि यह सिर्फ काम करता है, और आपके शेल स्टार्टअप को जेनव इनिट के साथ 0.5 एस से अव्यवस्थित नहीं करता है।
cvakiitho

2
यदि आप जावा 9 को इस तरह से काम करने की कोशिश कर रहे हैं, तो जावा 9 के लिए java_home का संस्करण तर्क बस 9उदाहरण के लिए होना चाहिएexport JAVA_9_HOME=$(/usr/libexec/java_home -v9)
डायलन निस्ले

125

MacOS सिएरा 420 के लिए

इस गाइड को विभिन्न स्रोतों (उत्तर के साथ-साथ अन्य पदों से ऊपर) से एक साथ जोड़ा गया था, और सही काम करता है।

0. यदि आप पहले से ही नहीं है, तो homebrew स्थापित करें।

Https://brew.sh/ देखें

1. जेनव स्थापित करें

brew install jenv

2. bash प्रोफाइल में jenv जोड़ें

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

3. अपने रास्ते पर जेनवेट जोड़ें

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

4. "कास्क्रूम / संस्करण" पर टैप करें

FYI करें: "टैप" उपलब्ध रिपोज की ब्रू की सूची का विस्तार करता है, यह उपलब्ध रिपोज की ब्रूज़ डिफॉल्ट लिस्ट के ऊपर और ऊपर स्थापित कर सकता है।

brew tap caskroom/versions

5. जावा का नवीनतम संस्करण स्थापित करें

brew cask install java

6. जावा 6 स्थापित करें (या 7 या 8 जो भी आपको चाहिए)

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

? हो सकता है कि टर्मिनल को बंद करें और फिर से चालू करें ताकि यह किसी भी नए ईएनवी संस्करण को देख सके जिसे सेटअप मिला।

7. समीक्षा प्रतिष्ठान

सभी जावा संस्करण यहां स्थापित होते हैं: /Library/Java/JavaVirtualMachinesएक नज़र डालते हैं।

ls -la /Library/Java/JavaVirtualMachines

8. प्रत्येक पथ को एक बार के जेनेव में जोड़ें।

हमें संस्करण फ़ोल्डर में "/ सामग्री / होम" जोड़ने की आवश्यकता है। चेतावनी: उपयोग वास्तविक पथ आपकी मशीन पर ... ये सिर्फ रहे हैं उदाहरण के

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 ने OK रजिस्टर किया है

jenv versions

10. जावा संस्करण का उपयोग करने के लिए (ग्लोबली) सेट करें

जहां XX ऊपर दिए गए संस्करणों की सूची में से किसी एक आइटम से मेल खाता है।

jenv global XX

जावा संस्करण की जाँच करें

java -version

Jenv वर्जन चेक करें

तारांकन चिह्न के साथ उपयोग किए जा रहे वर्तमान संस्करण को भी इंगित करना चाहिए।

jenv versions

किया हुआ


त्वरित भविष्य का संदर्भ

जावा संस्करण बदलने के लिए

... उपलब्ध जावा संस्करणों की सूची देखें

jenv versions

... तो, जहां XX ऊपर की सूची में एक आइटम से मेल खाता है

jenv global XX

1
इसके अतिरिक्त, आपके टर्मिनल के बाद पुनः आरंभbrew cask install java*
squeeish

1
स्पष्ट और महान स्पष्टीकरण कदम से कदम।
रितेश सिंह

1
त्रुटि: पीपा 'java8' अनुपलब्ध है: इस नाम के साथ कोई पीपा मौजूद नहीं है।
एलेक्सी श्री।

6
java8 / 9/10 आर्क के रूप में अब उपलब्ध नहीं हैं। इसके बजाय इसे आज़माएँ: "काढ़ा पीक इंस्टॉपटॉपेनजडक / ओपनज्डक / गोदोपेनजडक 8"
सुपी

1
brew tap caskroom/versionsहोना चाहिएbrew tap homebrew/cask-versions
व्याचेस्लाव कोटरूटा

42

SDKMAN! मैक ओएस पर जावा, ग्रेडल, ग्रूवी, कोटलिन और अन्य जेवीएम टूल्स के कई संस्करणों का उपयोग करने के लिए एक महान उपकरण है। स्थापना और उपयोग डॉक्टर मुख्य साइट पर स्पष्ट रूप से कर रहे हैं।

(मेरा कोई संबद्धता नहीं है, बस एक खुश उपयोगकर्ता है)।

उदाहरण के उपयोग के रूप में, यदि मैं टर्मिनल विंडो में निम्नलिखित टाइप करता हूं, तो उपलब्ध जावा एसडीके संस्करणों (संक्षिप्तता के लिए संपादित) की एक सूची है:

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

यहां +यह दर्शाता है कि संस्करण स्थापित है। >वर्तमान में कौन सा संस्करण उपयोग में है, यह दर्शाता है। एक संस्करण स्थापित करने के लिए:

$ sdk install java 7u141-zulu

इस टर्मिनल विंडो में एक संस्करण का उपयोग करने के लिए:

$ sdk use java 9ea170

sdkman जावा 1.7 के साथ शुरू होने वाले संस्करणों का समर्थन करता है। यदि आप जावा 1.6 का उपयोग करने के इच्छुक हैं तो यह समाधान आपके लिए उपयुक्त नहीं हो सकता है।
अर्कुट अकीन्स्की

एसडीकेमैन महान है, लेकिन वे एक संस्करण के भीतर विशिष्ट रिलीज का समर्थन नहीं करते हैं। उदाहरण के लिए, Datastax Dev Center केवल 1.8.0_151 के साथ काम करता है, लेकिन मैं इसे sdkman के साथ निर्दिष्ट नहीं कर सकता। उम्मीद है कि वे अधिक संस्करण जोड़ेंगे।
एडुआर्डो डेनिस

यदि आपके पास एक स्थानीय संस्करण है, तो मुझे लगता है कि आप इसे SDKMan - sdkman.io/usage#localversion (लेकिन मैंने इसे आज़माया नहीं है) में स्थापित कर सकते हैं
माइकल ईस्टर

6

जैसा कि इस वेबसाइट पर पाया गया है तो चलिए jEnv को इंस्टॉल करते हैं

  1. इसे टर्मिनल में चलाएं

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
  2. Bash प्रोफाइल में jEnv जोड़ें

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
  3. जब आप पहली बार jEnv को इनस्टॉल करते हैं तो इससे जुड़ा कोई JDK नहीं होगा।

    उदाहरण के लिए, मैंने अभी JDK 8 स्थापित किया है लेकिन jEnv को इसके बारे में पता नहीं है। JEnv पर जावा संस्करणों की जाँच करने के लिए

    फिलहाल यह केवल सिस्टम पर जावा संस्करण (jre) पाया। *शो संस्करण वर्तमान में चयनित। Rvm और rbenv के विपरीत, jEnv आपके लिए JDK स्थापित नहीं कर सकता है। आपको JDK को मैन्युअल रूप से Oracle वेबसाइट से इंस्टॉल करना होगा।

  4. Apple वेबसाइट से JDK 6 स्थापित करें। इसमें जावा इनस्टॉल होगा /System/Library/Java/JavaVirtualMachines/। हम Apple वेबसाइट से जावा 6 स्थापित करने का कारण यह है कि SUN मैक के लिए JDK 6 के साथ नहीं आया था, इसलिए 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. जेनव का उपयोग करके स्थापित जावा संस्करणों की जाँच करें

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

  8. तो अब हमारे पास हमारे सिस्टम पर जावा के 3 संस्करण हैं। डिफ़ॉल्ट संस्करण सेट करने के लिए कमांड का उपयोग करें

    jenv local <jenv version>

    Ex - मैं IntelliJ शुरू करने के लिए Jdk 1.6 चाहता था

    jenv local oracle64-1.6.0.65
  9. जावा संस्करण की जाँच करें

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

बस। अब हमारे पास जावा के कई संस्करण हैं और हम उनके बीच आसानी से स्विच कर सकते हैं। jEnv में कुछ अन्य विशेषताएं भी हैं, जैसे ग्रेडल, चींटी, मेवेन, आदि के लिए रैपर, और वैश्विक या स्थानीय स्तर पर जेवीएम विकल्प सेट करने की क्षमता। अधिक जानकारी के लिए दस्तावेज़ीकरण देखें।


5
अपने आदेशों की छवियां न डालें, उन्हें कॉपी / पेस्ट करना मुश्किल हो जाता है। आदेशों को हाइलाइट करने के लिए, एक शब्द या एक छोटे कमांड के लिए बैकटिक्स "` "का उपयोग करें, या अपनी कमांड को अपनी स्वयं की लाइन पर 4 रिक्त स्थान (या सूचियों में 4 के गुणक) के साथ इंडेंट करें।
सेकी

1
धन्यवाद सेकी। मैं छवियों को पोस्ट करने के लिए संघर्ष कर रहा था और एक लंबा समय प्रारूप बनाने की कोशिश कर रहा था, लेकिन यह सही नहीं हो सका। Backticks जानकारी साझा करने के लिए धन्यवाद।
दिनेश अरोड़ा

4
मुझे लगता है कि आपने चार बार एक ही छवि का उपयोग किया होगा।
एलेन स्पार्टस

5

मुझे यह जावा संस्करण प्रबंधक हाल ही में Jabba कहा जाता है और उपयोग rvm (रूबी), nvm (नोड), pyenv (अजगर), आदि जैसी अन्य भाषाओं के संस्करण प्रबंधकों के समान है। इसके अलावा यह निश्चित रूप से इसका इस्तेमाल किया जा सकता है तो पार मंच भी है। मैक।

स्थापना के बाद, यह आपके द्वारा स्थापित सभी जावा संस्करणों को लगाने के लिए ~ / .jabba में एक dir बनाएगा। यह "Oracle JDK (डिफ़ॉल्ट) / सर्वर JRE, ज़ुलु OpenJDK (0.3.0 के बाद से), IBM SDK, Java प्रौद्योगिकी संस्करण (0.6.0 से) और कस्टम URL से संस्थापन का समर्थन करता है।"

बुनियादी उपयोग उनके गिथुब पर सूचीबद्ध है। एक त्वरित सारांश शुरू करने के लिए:

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

मैं मैक ओएस एक्स 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और लाइन को अनकम्प्लीट करें setjdk jdk1.8.0_60.jdk। स्क्रिप्ट को सहेजें और इसे फिर से सोर्स कमांड से चलाएं। मैं JDK / JRE के कई संस्करणों के प्रबंधन के लिए इस तंत्र का उपयोग करता हूं जब मुझे 2 अलग-अलग मावेन परियोजनाओं को संकलित करना पड़ता है जिन्हें अलग-अलग जावा संस्करणों की आवश्यकता होती है।


3

मैक सिएरा पर जेनव:

यदि इंस्टॉल करने के बाद काम नहीं कर रहा है, तो इस बग को पाथ के लिए जावा निष्पादन योग्य जोड़ने के लिए ठीक करें

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

हालांकि eval "$(jenv init -)"यह काम कर सकता था। इसका कारण / बिन फ़ोल्डर वहाँ नहीं है जैसा कि इसके होमपेज में वर्णित है, लेकिन शिम फ़ोल्डर को इसके बजाय / बिन के रूप में उपयोग किया जाता है।

  • सुनिश्चित करें ~ / .jenv वहाँ है
  • which java प्रिंट कर सकते हैं / लाइब्रेरी / ...
  • jenv ग्लोबल 1.8
  • जेनेव खोल 1.8

आखिरकार, which javaआपको देता है:

/Users/xxxx/.jenv/shims/java


3

@ वेजर्ड (हल्के) की तुलना में एक ही भावना में:

  • Homebrew के साथ वांछित JDKs स्थापित करें
  • इस 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 संस्करण है (वेजर्ड के उत्तर के आधार पर)

1.7 और 1.8 को उन सभी संस्करणों से बदलें, जिनके साथ आप रुचि रखते हैं और आपको 'javaX' नामक एक उपनाम मिलेगा; जहाँ 'X' जावा संस्करण है (नीचे स्निपेट में 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

0

OpenJDK के अधिक हाल के संस्करणों को स्थापित करने के लिए, मैं इसका उपयोग करता हूं। OpenJDK 14 के लिए उदाहरण:

brew info adoptopenjdk
brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk14

वर्तमान जानकारी के लिए https://github.com/AdoptOpenJDK/homebrew-openjdk देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.