如何在Mac OS X中为JRE 7安装无限强度的JCE?

我为MacOSX安装了Oracle JRE 7(不是JDK),但是我找不到JCEpipe辖区文件的放置位置。

我需要用无限强度的版本来replace它们。

你对汤姆的回答的评论是正确的。 JREpath是/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/ ,然后JCE文件在lib/security/

我碰巧安装了多个JVM,所以我认为值得展示一种方法来检查特定的JVM是否具有正确的文件。 以下是一些可用于确定给定Java安装是否正确configuration的命令:

 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 

一旦知道文件的path,就可以根据需要replace它们。 请记住,每个Java版本都可能需要不同的JCE库。 根据兼容性的不同,您可能需要6,7和8个独立的jar子。

我已经安装了Oracle JDK,如果有帮助,我的情况下的目录是/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/security/ 。 你的里程可能会有所不同,在这种情况下只需运行find . -name local_policy.jar find . -name local_policy.jar ,看看它变成什么样子。

这是为JDK而不是JRE


我在Mac,OSx Lion和我使用/usr/libexec/java_homefind我的java家

 /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 

从这里你可以使用这个可执行文件并find这些文件

 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 

并结合@ ngreen的答案来获得这些文件的MD5(如果你想)

 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 

你可以看到我还没有replace这些文件。

如果需要备份原始文件

 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/ 

你可以用这个replace文件。

 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) 

获得MD5s告诉我,如果它的工作

 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