デフォルトのJavaインストールのcacertsの場所を取得する方法は?


91

cacertsあなたが持っていないJAVA_HOMEか、JRE_HOME定義していないときに、デフォルトのJavaインストールの場所を取得する方法を探しています。

私はのために、少なくとも機能するソリューションを必要OS XLinux

はい。java -v動作すると想定されています:)

回答:


156

下でのLinuxの場所を見つけるために$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

下では、MAC OS X、検索する$JAVA_HOME実行します。

/usr/libexec/java_home

cacerts下にありますHome/lib/security/cacerts

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

UPDATE(OS XとJDK)

上記のコードは、JDKがインストールされていないコンピューターでテストされました。JDKがインストールされていると、pR0Pが言ったように

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

6
OS Xでは、JAVA_HOMEを見つける「公式」の方法が実行されています/usr/libexec/java_home
Daniel Serodio 2013年

2
@DanielSerodio、同意した。上記/usr/libexec/java_homereadlink-basedコマンドとは異なる答えを私に与え、前者はcacertsファイルを含むという点で正しいようです。
Andrew Ferrier 2014年

1
@DanielSerodioとAndrewFerrierのおかげで、回答が更新されました。
Kuf

@Kuf私のJDKには、Mac Yosemiteにこのlib / securityフォルダーがありません。私は正しい$ JAVA_HOMEにいると確信しています
ブライアン

1
OSX 10.10.5では、セキュリティフォルダーは次の場所にあります:Home / jre / lib / security
Sid Sarasvati

47

OS X 10.10.1(Yosemite)以降、cacertsファイルの場所が次のように変更されました

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

9

これらの証明書にプログラムでアクセスする必要がある場合は、ファイルをまったく使用せず、トラストマネージャーを介してアクセスすることをお勧めします。次のコードはOpenJDK テストケースからのものです(ビルドされたcacertsコレクションが空でないことを確認します)。

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を使用してJavaバージョンを管理する場合、cacertsは

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

注:JDK 11付きのsdkmanの現在のバージョンの場合、場所は~/.sdkman/candidates/java/current/lib/security
Snekse

3

ハイシエラでは、cacertsは次の場所にあります。/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts


1

readlink -f " which java"を参照することもできます。ただし、すべてのバイナリラッパーで機能するとは限りません。Javaクラスを実際に開始する方が適切です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.