डिफ़ॉल्ट जावा इंस्टॉलेशन के कैसर्ट का स्थान कैसे प्राप्त करें?


91

मैं यह देख रहा हूं cacertsकि डिफ़ॉल्ट जावा इंस्टॉलेशन का स्थान कैसे प्राप्त करें , जब आपके पास नहीं है JAVA_HOMEया JRE_HOMEपरिभाषित नहीं है ।

मुझे ऐसे समाधान की आवश्यकता है जो कम से कम OS Xऔर के लिए काम करे Linux

हाँ। java -vकाम करने के लिए माना जाता है :)

जवाबों:


158

लिनक्स के तहत , का स्थान खोजने के लिए $JAVA_HOME:

readlink -f /usr/bin/java | sed "s:bin/java::"

इस प्रकार cacertsहैं lib/security/cacerts:

$(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts

मैक ओएस एक्स के तहत , $JAVA_HOMEचलाने के लिए:

/usr/libexec/java_home

इस प्रकार cacertsहैं Home/lib/security/cacerts:

$(/usr/libexec/java_home)/lib/security/cacerts

अद्यतन (OS X JDK के साथ)

JDK स्थापित किए बिना कंप्यूटर पर उपरोक्त कोड का परीक्षण किया गया था। PR0Ps के रूप में JDK स्थापित के साथ , यह पर है

$(/usr/libexec/java_home)/jre/lib/security/cacerts

6
OS X में, JAVA_HOME ढूंढने का "आधिकारिक" तरीका चल रहा है/usr/libexec/java_home
डैनियल सिरोडियो

2
@DanielSerodio, सहमत। /usr/libexec/java_homeमुझे readlinkऊपर दिए गए कमांड से एक अलग उत्तर देता है , और पूर्व सही प्रतीत होता है, इसमें cacertsफ़ाइल शामिल है ।
एंड्रयू फेरियर

1
@DanielSerodio और एंड्रयूफायर धन्यवाद दोस्तों, जवाब अद्यतन।
कुफ

@Kuf My JDK में Mac Yosemite पर यह lib / सुरक्षा फ़ोल्डर नहीं है। मैं सकारात्मक हूं कि मैं $ $ JAVA_HOME
ब्रायन

1
OSX 10.10.5 पर सिक्योरिटी फोल्डर निम्न प्रकार से है: होम / jre / lib / सुरक्षा
सिड सरस्वती

47

OS X 10.10.1 (Yosemite) के रूप में, cacertsफ़ाइल का स्थान बदल दिया गया है

$(/usr/libexec/java_home)/jre/lib/security/cacerts

9

यदि आपको प्रोग्राम के लिए उन सेरेक्ट को एक्सेस करने की आवश्यकता है, तो फ़ाइल का उपयोग नहीं करना सबसे अच्छा है, लेकिन ट्रस्ट मैनेजर के माध्यम से इसे एक्सेस करें। निम्न कोड OpenJDK टेस्ट केस से है (जो सुनिश्चित करता है कि निर्मित कैसर्ट संग्रह खाली नहीं है)

TrustManagerFactory trustManagerFactory =
    TrustManagerFactory.getInstance("PKIX");
trustManagerFactory.init((KeyStore) null);
TrustManager[] trustManagers =
    trustManagerFactory.getTrustManagers();
X509TrustManager trustManager =
    (X509TrustManager) trustManagers[0];
X509Certificate[] acceptedIssuers =
    trustManager.getAcceptedIssuers();

इसलिए आपको फ़ाइल स्थान या कीस्टोर पासवर्ड से निपटने की आवश्यकता नहीं है।


यह कैसर्ट में स्थापित प्रमाण पत्र नहीं पढ़ रहा है। अगर मैं फ़ाइल पथ और पासवर्ड का उपयोग करने में सक्षम हूं
सोमनाथ सिंह

7

MacOS Mojave में, स्थान है:

/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/lib/security/cacerts 

अगर जावा संस्करणों को प्रबंधित करने के लिए sdkman का उपयोग किया जाता है, तो cacerts अंदर है

~/.sdkman/candidates/java/current/jre/lib/security

नोट: sdkman w / JDK 11 के वर्तमान संस्करणों के लिए, स्थान है~/.sdkman/candidates/java/current/lib/security
स्नेक

3

उच्च सिएरा में, कैसर्ट यहां स्थित है:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts


1

आप रीडलिंक -f " which java" से भी सलाह ले सकते हैं । हालाँकि यह सभी बाइनरी रैपर्स के लिए काम नहीं कर सकता है। वास्तव में जावा क्लास शुरू करना सबसे बेहतर है।

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