CentOS के लिए JAVA_HOME का मान क्या है?


37

मैंने CentOS पर yum के माध्यम से जावा स्थापित किया है, हालांकि एक और जावा प्रोग्राम को यह जानने की जरूरत है कि JAVA_HOME पर्यावरण चर क्या है। मुझे पर्यावरण चर सेट करने के बारे में सब पता है, लेकिन मैं इसे किस पर सेट करूं? javaमें स्थापित है /usr/bin/java, यह वहाँ नहीं हो सकता है!

जवाबों:


54

वास्तव में मैंने इसे पाया,

यह है /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/। मुझे पता चला कि यह क्या कर रहा था update-alternatives --display javaऔर इसने मुझे निर्देशिका दिखाई/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java


20

मुझे पूरा यकीन नहीं है लेकिन अगर आप सामान्य RPMS को स्थापित करते हैं तो JAVA_HOME मान भी इस पर सेट किया जा सकता है:

/usr/java/default/

EDIT: मैंने अभी-अभी अपने होम सिस्टम पर जाँच की है। मैंने यह फ़ाइल बनाई है:

/etc/profile.d/java.sh

उसमें सम्मिलित है:

export JAVA_HOME=/usr/java/default/

और मैं सन से आधिकारिक संस्करण का उपयोग कर रहा हूं: jdk-1.6.0_12-fcs

संपादित करें: यहां बताया गया है कि मैंने अपनी मशीन पर जावा की स्थापना कैसे की :

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

Oracle से Java JDK को डाउनलोड और इंस्टॉल करें

इसे प्राथमिक बनाएं

यह सुनिश्चित करें कि OpenJDK संस्करण के बजाय इस जावा का उपयोग निम्नलिखित दो आदेशों का उपयोग करके किया गया है:

प्रथम

alternatives --install /usr/bin/java java /usr/java/default/bin/java 999999 \
           --slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \
           --slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry

दूसरा

alternatives --install /usr/bin/javac javac /usr/java/default/bin/javac 999999 \
           --slave /usr/bin/jar jar /usr/java/default/bin/jar \
           --slave /usr/bin/rmic rmic /usr/java/default/bin/rmic

JAVA_HOME सेट करें

सुनिश्चित करें कि सभी उपयोगकर्ताओं का JAVA_HOME पर्यावरण चर सही मान पर सेट है:

echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh

ओह दिलचस्प। :)
रोरी

1
/usr/java/defaultOpenJDK 1.6 और 1.7 स्थापित के साथ मेरे CentOS 6 बॉक्स में कोई नहीं है।
डैनियल सेरोडियो

@DanielSerodio सही। मैंने स्पष्ट रूप से "ओरेकल से जावा जेडीके डाउनलोड और इंस्टॉल किया", और फिर यह मौजूद है।
नील्स बसजेस

2

आप JAVA_HOME को JDK या JRE के मूल स्थान के रूप में सेट करना चाहते हैं, उदाहरण के लिए:

export JAVA_HOME=/usr/java/jdk1.3

यदि JDK (विकास किट) स्थापित है, तो ypu शायद इसे इंगित करना चाहते हैं, अन्यथा JRE पथ (जावा रनटाइम एनवायरनमेंट) का उपयोग करें। फिर, आप बिन निर्देशिका को शामिल करने के लिए अपना $ PATH पर्यावरण चर सेट करना चाह सकते हैं:

export PATH=$PATH:/usr/java/jdk1.3/bin

यदि आप tomcat का उपयोग कर रहे हैं, तो आपको tomcat उपयोगकर्ता के लिए CATALINA_HOME सेट करना पड़ सकता है।

export CATALINA_HOME=/path/to/tomcat

इसे उस सिस्टम के लिए सेट करने के लिए जिसे आप अपना / etc / प्रोफाइल संपादित करना चाहते हैं या /etc/profile.d फ़ोल्डर में .sh फ़ाइल जोड़ें। किसी विशेष उपयोगकर्ता के लिए आप इसे ~ / .profile या ~ / .bash_profile फ़ाइलों में रख सकते हैं।


मुझे आश्चर्य है कि अगर वहाँ एक अच्छा कारण है कि स्थापित आपके लिए ऐसा नहीं करता है यदि सुपर उपयोगकर्ता के रूप में चला जाए, तो मुझे हमेशा यह परेशान लगता है ...
काइल ब्रांट

2

नीचे हमेशा मेरे लिए पूरी तरह से काम कर रहा है:

[user@base ~]$ locate bin/java
/usr/bin/java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/java/jdk1.6.0_31/bin/java
/usr/java/jdk1.6.0_31/bin/javac
/usr/java/jdk1.6.0_31/bin/javadoc
/usr/java/jdk1.6.0_31/bin/javah
/usr/java/jdk1.6.0_31/bin/javap
/usr/java/jdk1.6.0_31/bin/javaws
/usr/java/jdk1.6.0_31/jre/bin/java
/usr/java/jdk1.6.0_31/jre/bin/java_vm
/usr/java/jdk1.6.0_31/jre/bin/javaws

इसका मतलब है कि मैं JAVA_HOME को /usr/java/jdk1.6.0_31 के रूप में सेट कर सकता हूं


1

मैंने इस समस्या पर विचार किया कि क्या कोई जावा के संस्करण का उपयोग करता है:

alternatives --config java

फिर किसी भी हार्ड कोड JAVA_HOMEको बदलने जा रहा है (कम से कम यह Centos 6.6 मैं वर्तमान में घूर रहा हूं) पर होगा। अर्थात कोई भी नहीं है /usr/java

यह सबसे अच्छा तरीका (विफलता के लिए खुला) जैसा नहीं लगता है, लेकिन 10 मिनट में मैंने इस पर खर्च किया है यह सबसे अच्छा लगता है।

में /etc/bashrcकरने के लिए मैं सेटिंग में बदलाव कर JAVA_HOMEहोने के लिए:

export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')

आपको MacOSX पर कुछ ऐसा ही करना है, लेकिन सभी के बिना grepऔर sedपरिणाम का पता लगाने के लिए। निश्चित रूप से alternativesएक समान आसान समाधान प्रदान करता है।

वैसे भी मुझे उम्मीद है कि मैंने मदद की।


अद्यतन करें

नहीं ऐसा नहीं होगा JRE_HOME। जेडीके / एसडीके स्पष्ट नहीं है (मैं देखता रहूंगा)।

alternativesकेवल डिफ़ॉल्ट रूप से JRE के बारे में हो रहा है। मैं @ उत्तर का जवाब देना चाहता हूं या केवल जावा स्थापित करें yumऔर JAVA_HOME को उस पर सेट करें (चाल वह है जहां मैंने पाया है कि जहां स्थापित किया गया था!)।

yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm 

मैंने देखा java_1.8.0कि एक सिमिलिंक है /etc/alternatives/java_sdk_1.8.0और इसलिए मैंने अपना $ JAVA_HOME सेट किया है /usr/lib/jvm/java_1.8.0। में /etc/bashrc


0

अजीब बात है, एक JAVE_HOME पर्यावरण चर होने की पूरी बात यह है कि आपको प्रत्येक कार्यक्रम के लिए पथ निर्दिष्ट करने की आवश्यकता नहीं है, यह इस चर की तलाश करके इस पथ को प्राप्त कर सकता है।

किसी भी तरह से, JAVA_HOME के ​​लिए पर्यावरण चर खोजने का सही तरीका इको का उपयोग करना है:

[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09

इस कमांड को रन करने से कमांड लाइन से कोई फर्क नहीं पड़ता कि आप किस संस्करण को चला रहे हैं।


2
चर सेट नहीं किया गया था।
रोरी

0

पुन: Centos7, /etc/java/java.conf फ़ाइल देखें।

इसमें JAVA_HOME को निम्नलिखित dir में स्थित होने का संकेत दिया गया है: / usr / lib / jvm / java

मैंने जाँच की, यह jdk का सही संस्करण है जिसे मैंने yum के माध्यम से लोड किया है, और इसलिए ...

मेरे env में डिफ़ॉल्ट रूप से JAVA_HOME सेट नहीं है, इसलिए मैंने इसे .bash_profile में सेट किया है


0

मैंने पाया पैकेज प्रबंधक स्थानों की एक किस्म में जगह कर सकते हैं, इसलिए का उपयोग कर जो निम्नलिखित थोड़ा कम भंगुर है (आप स्पष्ट रूप से यह स्थापित करने के लिए है, तो एक कंटेनर का उपयोग की आवश्यकता होगी)

javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome

या JRE के लिए

javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.