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

And*_*ini 39 java macos jce

我为MacOSX安装了Oracle JRE 7(不是JDK),但我无法找到放置JCE管辖区文件的位置.

我需要用无限强度版本替换它们.

Tho*_*hom 32

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


Nat*_*ate 26

这适用于JDK,而不是JRE.


我在Mac,OSx Lion和我/usr/libexec/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
Run Code Online (Sandbox Code Playgroud)

从这里您可以使用此可执行文件并找到这些文件

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
Run Code Online (Sandbox Code Playgroud)

并将其与@ 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
Run Code Online (Sandbox Code Playgroud)

你可以看到我还没有替换这些文件.

如果需要,备份原始文件

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/
Run Code Online (Sandbox Code Playgroud)

您可以用这个替换文件.

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)
Run Code Online (Sandbox Code Playgroud)

获得MD5告诉我它是否有效

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
Run Code Online (Sandbox Code Playgroud)

  • 这是JDK而不是JRE. (2认同)

ngr*_*een 24

你对Thom的回答是正确的.JRE路径是/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/,然后JCE文件lib/security/.

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

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
Run Code Online (Sandbox Code Playgroud)

一旦知道文件的路径,就可以根据需要替换它们.请记住,每个Java版本都可能需要不同的JCE库.根据兼容性,您可能需要6,7和8个单独的罐子.