Eu estou procurando como obter a localização da cacerts
instalação padrão do java, quando você não tem JAVA_HOME
ou JRE_HOME
definido.
Preciso de uma solução que funcione pelo menos para OS X
e Linux
.
Sim. java -v
presume-se que funcione :)
No Linux , para encontrar a localização de $JAVA_HOME
:
readlink -f /usr/bin/java | sed "s:bin/java::"
o cacerts
estão sob lib/security/cacerts
:
$(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts
No mac OS X , para encontrar $JAVA_HOME
run:
/usr/libexec/java_home
o cacerts
estão sob Home/lib/security/cacerts
:
$(/usr/libexec/java_home)/lib/security/cacerts
ATUALIZAÇÃO (OS X com JDK)
o código acima foi testado em um computador sem JDK instalado. Com o JDK instalado, como pR0Ps disse , é
$(/usr/libexec/java_home)/jre/lib/security/cacerts
/usr/libexec/java_home
/usr/libexec/java_home
me dá uma resposta diferente doreadlink
comando -baseado acima, e o primeiro parece estar correto, pois contém ocacerts
arquivo.A partir do OS X 10.10.1 (Yosemite), a localização do
cacerts
arquivo foi alterada parafonte
Se você precisar acessar esses certificados programaticamente, é melhor não usar o arquivo, mas acessá-lo por meio do gerenciador de confiança. O código a seguir é de um caso de teste OpenJDK (que garante que a coleção cacerts construída não esteja vazia):
Assim, você não precisa lidar com a localização do arquivo ou a senha do keystore.
fonte
No MacOS Mojave, a localização é:
Se estiver usando sdkman para gerenciar versões java, o cacerts está em
fonte
~/.sdkman/candidates/java/current/lib/security
Em High Sierra, o cacerts está localizado em:
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts
fonte
Você também pode consultar readlink -f "
which java
". No entanto, pode não funcionar para todos os wrappers binários. Provavelmente, é melhor realmente iniciar uma classe Java.fonte