আমি কীভাবে cacerts
ডিফল্ট জাভা ইনস্টলেশনটির অবস্থান কীভাবে পেতে পারি তা সন্ধান করছি, যখন আপনার কাছে JAVA_HOME
বা JRE_HOME
সংজ্ঞা নেই।
আমার এমন একটি সমাধান দরকার যা কমপক্ষে OS X
এবং এর জন্য কাজ করে Linux
।
হ্যাঁ. java -v
কাজ অনুমান করা হয় :)
উত্তর:
লিনাক্সের অধীনে , এর অবস্থানটি সন্ধান করতে $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
আপডেট (জেডিকে সহ ওএস এক্স)
উপরের কোডটি জেডিকে ইনস্টল না করে কম্পিউটারে পরীক্ষা করা হয়েছিল। জেডিকে ইনস্টল করার সাথে, পিআর 0 পিএস যেমন বলেছে , এটি এখন
$(/usr/libexec/java_home)/jre/lib/security/cacerts
/usr/libexec/java_home
থেকে আমাকে একটি আলাদা উত্তর দেয় readlink
এবং পূর্ববর্তীটি সঠিক বলে মনে হয়, এতে এতে cacerts
ফাইল রয়েছে ।
আপনার যদি প্রোগ্রামগুলিতে সেই শংসাপত্রগুলি অ্যাক্সেস করার প্রয়োজন হয় তবে ফাইলটি মোটেই ব্যবহার না করা ভাল, তবে ট্রাস্ট ম্যানেজারের মাধ্যমে এটি অ্যাক্সেস করুন। নিম্নলিখিত কোডটি ওপেনজেডকে টেস্ট কেস থেকে এসেছে (এটি নিশ্চিত করে যে বিল্ট ক্যাসর্ট সংগ্রহটি খালি নয়):
TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance("PKIX");
trustManagerFactory.init((KeyStore) null);
TrustManager[] trustManagers =
trustManagerFactory.getTrustManagers();
X509TrustManager trustManager =
(X509TrustManager) trustManagers[0];
X509Certificate[] acceptedIssuers =
trustManager.getAcceptedIssuers();
সুতরাং আপনাকে ফাইলের অবস্থান বা কীস্টোরের পাসওয়ার্ড নিয়ে কাজ করতে হবে না।
MacOS মোজাভেতে, অবস্থানটি হ'ল:
/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/lib/security/cacerts
যদি জাভা সংস্করণগুলি পরিচালনা করতে sdkman ব্যবহার করা হয় তবে ক্যাসার্টগুলি ভিতরে রয়েছে
~/.sdkman/candidates/java/current/jre/lib/security
~/.sdkman/candidates/java/current/lib/security
/usr/libexec/java_home