कैसे बताएं कि JRE या JDK स्थापित है या नहीं


134

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


1
क्या आप त्रुटि का पूरा पाठ पोस्ट कर सकते हैं, जिसमें आप इसे चलाने का प्रयास भी कर रहे हैं। आपको जावा प्रोग्राम को चलाने के लिए JDK की आवश्यकता नहीं है, बस JRE।
केविन वर्कमैन

यह एक दोस्त कंप्यूटर था- कमांड लाइन टूल इंस्टॉल करने के बारे में। जब मुझे फिर से निरीक्षण करने का मौका मिलेगा तो मैं फिर से टिप्पणी करूंगा।
पोप कर्नेल

ऐसा लगता है कि आप यह सुनिश्चित करने के बारे में बात कर रहे हैं कि जावा आपके रास्ते पर है, लेकिन यह सिर्फ एक अनुमान है। किसी भी तरह से, आपको केवल जावा प्रोग्राम चलाने के लिए JRE की आवश्यकता है। आपको उन्हें संकलित करने के लिए JDK की आवश्यकता है।
केविन कर्मकार

केवल कुछ जावा कार्यक्रमों के लिए JDK, IDEs, सर्वलेट कंटेनरों की आवश्यकता होती है, जो JSP और कुछ अन्य लोगों को संकलित करने के लिए tomcat की तरह होते हैं। किस तरह के आवेदन में समस्या है?
Arne Burmeister

जवाबों:


159

आप टर्मिनल खोल सकते हैं और बस टाइप कर सकते हैं

java -version // this will check your jre version
javac -version // this will check your java compiler version if you installed 

यह आपको सिस्टम पर स्थापित जावा का संस्करण दिखाना चाहिए (यह मानते हुए कि आपने सिस्टम के वातावरण में जावा का मार्ग निर्धारित किया है)।

और अगर आपने नहीं किया है, तो इसके माध्यम से जोड़ें

export JAVA_HOME=/path/to/java/jdk1.x

और यदि आप अनिश्चित हैं यदि आपके पास अपने सिस्टम पर जावा का उपयोग केवल findटर्मिनल में है

अर्थात find / -name "java"


1
@MaciejCygan, मेरा JAVA_HD एक JDK के बजाय एक JRE को क्यों इंगित कर रहा है?
पचेरियर 8

@ स्पेसियर क्यों ?? मुझे नहीं पता कि निश्चित रूप से योग्य के लिए!। शायद आपके पास जेडीके स्थापित नहीं है? रनिंग विंडो या लाइनक्स ??
मैकीज साइगन

@MaciejCygan, मैं विंडोज़ का उपयोग कर रहा हूं। हाँ, मुझे एक JDK भी मिला है।
पचेरियर

@ स्पेसर आप संपादित कर सकते हैं / या एक प्रविष्टि बना सकते हैं यदि कोई नहीं मिला - अपने पर्यावरण चर के अंदर।
मैकीज साइगन

@MaciejCygan, हाँ, लेकिन मेरे JAVA_HD एक JDK के बजाय एक JRE की ओर क्यों इशारा कर रहा है?
पचेरियर

18

आम तौर पर एक jdk इंस्टॉलेशन में पर्यावरण पथ चर में javac होता है ... इसलिए यदि आप रास्ते में javac की जांच करते हैं, तो यह एक बहुत अच्छा संकेतक है जिसे आपने jdk इंस्टॉल किया है।


3
मुझे पता है कि ओपी एक मैक के बारे में पूछ रहा था, इसलिए यह वहां अलग हो सकता है। लेकिन विंडोज के लिए, यह परीक्षण विश्वसनीय नहीं लगता है। मैंने अभी जाँच की है, और मेरे पास javacमेरे रास्ते में नहीं है , लेकिन मेरे पास एक jdk स्थापित है। (मेरे मामले में, मेरे JAVA_HOME को इंगित किया गया है C:\Program Files\Java\jdk1.8.0_45)
kmote

हाँ, आप सही कारण हैं जेवैक वास्तव में% JAVA_HOME% \ बिन में स्थित है
हमीद

6

@ maciej-cygan ने इस प्रक्रिया का अच्छी तरह से वर्णन किया है, हालांकि आपके जावा पथ को खोजने के लिए:

$ which java

यह आपको javaबाइनरी फ़ाइल का मार्ग देता है जो /usr/binनिर्देशिका में एक लिंक की गई फ़ाइल है । आगे:

$ cd /usr/bin/ && ls -la | grep java

इंगित स्थान खोजें जो कुछ इस प्रकार है (मेरे लिए):

यहाँ छवि विवरण दर्ज करें फिर cdजावा के लिए असली घर निर्देशिका खोजने के लिए इंगित निर्देशिका के लिए। आगे:

$ ls -la | grep java

जो इस प्रकार है:

यहाँ छवि विवरण दर्ज करें

इसलिए जैसा कि स्क्रीनशॉट में स्पष्ट है, मेरा जावा होम डायरेक्टरी है /usr/lib/jvm/java-11-openjdk-amd64। तो तदनुसार मैं (मेरे बैश प्रोफ़ाइल की JAVA_HOME जोड़ने की जरूरत है .bashrc, .bash_profileनीचे की तरह अपने ओएस पर निर्भर करता है, आदि):

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

हेयर यू गो!


0

JAVA प्रलेखन के अनुसार, JDK को इस पथ में स्थापित किया जाना चाहिए:

/Library/Java/JavaVirtualMachines/jdkmajor.minor.macro[_update].jdk

Https://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html पर JDK भाग की स्थापना रद्द करें देखें

इसलिए यदि आप ऐसे फ़ोल्डर को ढूंढ सकते हैं तो JDK इंस्टॉल हो गया है


0

एक सामान्य, शुद्ध जावा समाधान ।।

Windows और MacOS के लिए, निम्नलिखित का अनुमान लगाया जा सकता है (अधिकांश समय) ...

public static boolean isJDK() {
    String path = System.getProperty("sun.boot.library.path");
    if(path != null && path.contains("jdk")) {
        return true;
    }
    return false;
}

हालाँकि ... लिनक्स पर यह उतना विश्वसनीय नहीं है ... उदाहरण के लिए ...

  • लिनक्स पर कई JRE openjdkमें पथ होता है
  • इस बात की कोई गारंटी नहीं है कि JRE में JDK भी नहीं है।

इसलिए एक अधिक विफल-सुरक्षित दृष्टिकोण javacनिष्पादन योग्य के अस्तित्व की जांच करना है ।

public static boolean isJDK() {
    String path = System.getProperty("sun.boot.library.path");
    if(path != null) {
        String javacPath = "";
        if(path.endsWith(File.separator + "bin")) {
            javacPath = path;
        } else {
            int libIndex = path.lastIndexOf(File.separator + "lib");
            if(libIndex > 0) {
                javacPath = path.substring(0, libIndex) + File.separator + "bin";
            }
        }
        if(!javacPath.isEmpty()) {
            return new File(javacPath, "javac").exists() || new File(javacPath, "javac.exe").exists();
        }
    }
    return false;
}

चेतावनी: यह अभी भी JRE + JDK combos के लिए विफल होगा जो JRE की sun.boot.library.pathJRE और JDK के बीच की पहचान की रिपोर्ट करता है । उदाहरण के लिए, उपरोक्त कोड चलने पर फेडोरा का JDK विफल हो जाएगा (या आप इसे कैसे देखते हैं इसके आधार पर)। अधिक जानकारी के लिए नीचे दिए गए इकाई परीक्षण देखें ...

इकाई परीक्षण:

# Unix
java -XshowSettings:properties -version 2>&1|grep "sun.boot.library.path"
# Windows
java -XshowSettings:properties -version 2>&1|find "sun.boot.library.path"
    # PASS: MacOS AdoptOpenJDK JDK11
    /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/lib

    # PASS: Windows Oracle JDK12
    c:\Program Files\Java\jdk-12.0.2\bin

    # PASS: Windows Oracle JRE8
    C:\Program Files\Java\jre1.8.0_181\bin

    # PASS: Windows Oracle JDK8
    C:\Program Files\Java\jdk1.8.0_181\bin

    # PASS: Ubuntu AdoptOpenJDK JDK11
    /usr/lib/jvm/adoptopenjdk-11-hotspot-amd64/lib

    # PASS: Ubuntu Oracle JDK11
    /usr/lib/jvm/java-11-oracle/lib

    # PASS: Fedora OpenJDK JDK8
    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.fc24.x86_64/jre/lib/amd64

    #### FAIL: Fedora OpenJDK JDK8
    /usr/java/jdk1.8.0_231-amd64/jre/lib/amd64

0

प्रश्न में कंप्यूटर एक मैक है।

एक macOS- केवल समाधान:

/usr/libexec/java_home -v 1.8+ --exec javac -version

1.8+जावा 1.8 या उच्चतर कहां है।

दुर्भाग्य से, java_homeसहायक उचित रिटर्न कोड सेट नहीं करता है, इसलिए विफलता की जांच के लिए आउटपुट (जैसे 2>&1 |grep -v "Unable") को पार्स करने की आवश्यकता होती है जो लोकेल के आधार पर भिन्न होती है।

ध्यान दें, जावा में भी मौजूद हो सकता है /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin, लेकिन इसे लिखने के समय, मैं एक JRE से अनजान हूं जो वहां स्थापित होता है जिसमें यह भी शामिल है javac

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