web-dev-qa-db-fra.com

Comment installer JCE de force illimitée pour JRE 7 dans MacOSX?

J'ai installé Oracle JRE 7 (pas JDK) pour MacOSX mais je n'arrive pas à localiser les fichiers de juridiction JCE.

Je dois les remplacer par la version à force illimitée.

39
Andrea Mariottini

Votre commentaire sur Thom est correct. Le chemin JRE est /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/, et les fichiers JCE sont alors sous lib/security/.

Il se trouve que plusieurs JVM sont installées, j'ai donc pensé qu'il valait la peine de montrer un moyen de vérifier si une JVM particulière avait les fichiers appropriés. Voici quelques commandes que vous pouvez utiliser pour déterminer si une installation donnée Java est configurée correctement:

find ~/Downloads/UnlimitedJCEPolicy -name *.jar |xargs md5
cd /Library/Java/JavaVirtualMachines/  # -OR-
cd '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/'
find . \( -name local_policy.jar -or -name US_export_policy.jar \) |xargs md5

Une fois que vous connaissez le chemin d'accès aux fichiers, vous pouvez les remplacer au besoin. Gardez à l'esprit que chaque version de Java peut nécessiter des bibliothèques JCE différentes. Vous pouvez avoir besoin de fichiers JAR séparés pour 6, 7 et 8, selon la compatibilité.

24
ngreen

J'ai installé Oracle JDK, et si cela peut aider, le répertoire dans mon cas était /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/security/. Votre kilométrage peut varier, auquel cas exécutez simplement find . -name local_policy.jar et voyez ce que ça donne.

32
Thom

C'est pour le JDK, pas le JRE .


Je suis sur un Mac, OSx Lion et j'ai utilisé /usr/libexec/Java_home pour trouver mon Java home

/usr/libexec/Java_home -V
# Matching Java Virtual Machines (3):
#     1.7.0_51, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
#     1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
#     1.6.0_65-b14-462, i386:   "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
# 
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

/usr/libexec/Java_home
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

/usr/libexec/Java_home -v 1.6
# /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/usr/libexec/Java_home -v 1.7
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

De là, vous pouvez utiliser cet exécutable et trouver pour localiser ces fichiers

find $(/usr/libexec/Java_home -v 1.7) -name local_policy.jar
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/local_policy.jar

find $(/usr/libexec/Java_home -v 1.7) -name US_export_policy.jar
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/US_export_policy.jar

Et combinez cela avec la réponse de @ ngreen pour obtenir le md5 de ces fichiers (si vous le souhaitez)

find ~/Downloads/UnlimitedJCEPolicy -name *.jar |xargs md5
# MD5 (/Users/nperry/Downloads/UnlimitedJCEPolicy/local_policy.jar) = 9dd69bcc7637d872121880c35437788d
# MD5 (/Users/nperry/Downloads/UnlimitedJCEPolicy/US_export_policy.jar) = 3bb2e88a915b3cb003ca185357a92c16

find $(/usr/libexec/Java_home -v 1.7) -name local_policy.jar | xargs md5
# MD5 (/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/local_policy.jar) = f41ab8f64b1fa13fec7276579c420951

find $(/usr/libexec/Java_home -v 1.7) -name US_export_policy.jar | xargs md5
# MD5 (/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/US_export_policy.jar) = d5d126ae15abecb7d6e3a28b0d57543e

Et vous pouvez voir que je n'ai pas encore remplacé ces fichiers.

Sauvegardez les fichiers d'origine si vous le souhaitez

mkdir ~/Downloads/JCEPolicy-originals-1.7/
cp $(find $(/usr/libexec/Java_home -v 1.7) -name local_policy.jar)     ~/Downloads/JCEPolicy-originals-1.7/
cp $(find $(/usr/libexec/Java_home -v 1.7) -name US_export_policy.jar) ~/Downloads/JCEPolicy-originals-1.7/

Vous pouvez remplacer les fichiers par ceci.

Sudo cp ~/Downloads/UnlimitedJCEPolicy/local_policy.jar $(find $(/usr/libexec/Java_home -v 1.7) -name local_policy.jar)
Sudo cp ~/Downloads/UnlimitedJCEPolicy/US_export_policy.jar $(find $(/usr/libexec/Java_home -v 1.7) -name US_export_policy.jar)

Et obtenir les MD5 me dit si ça a marché

find $(/usr/libexec/Java_home -v 1.7) -name local_policy.jar | xargs md5
# MD5 (/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/local_policy.jar) = 9dd69bcc7637d872121880c35437788d

find $(/usr/libexec/Java_home -v 1.7) -name US_export_policy.jar | xargs md5
# MD5 (/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/US_export_policy.jar) = 3bb2e88a915b3cb003ca185357a92c16
26
Nate