আমি কীভাবে 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