如何在 MacOSX 中为 JRE 7 安装无限强度 JCE?
Posted
技术标签:
【中文标题】如何在 MacOSX 中为 JRE 7 安装无限强度 JCE?【英文标题】:How to install unlimited strength JCE for JRE 7 in MacOSX? 【发布时间】:2012-08-28 00:47:01 【问题描述】:我为 MacOSX 安装了 Oracle JRE 7(不是 JDK),但我找不到 JCE 管辖文件所在的位置。
我需要用无限强度版本替换它们。
【问题讨论】:
***.com/questions/1179672/…的可能重复 这不是重复的,因为 JRE 7 似乎没有 Java Home,或者我找不到它...这是我的问题。 用了两秒钟的 Google(对于macosx java home
的术语)发现了这个网站:developer.apple.com/library/mac/#qa/qa1170/_index.html。问之前你有没有研究过这个?
这是 JDK Java Home 而非 JRE 的路径。评论前你读过吗?
【参考方案1】:
我已经安装了 Oracle JDK,如果有帮助,我的目录是 /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/security/
。您的里程可能会有所不同,在这种情况下,只需运行 find . -name local_policy.jar
并查看结果。
【讨论】:
我找到了 2:./Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/local_policy.jar ./Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk /Contents/Home/jre/lib/security/local_policy.jar 我认为冷杉是我想要的。【参考方案2】:这是针对 JDK,而不是 JRE。
我在 Mac、OSx Lion 上使用 /usr/libexec/java_home
找到我的 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 $(/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
你可以看到我还没有替换这些文件。
如果需要,请备份原始文件
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/
你可以用这个替换文件。
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)
获取 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
【讨论】:
这是 JDK 而不是 JRE。【参考方案3】:您对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
一旦您知道文件的路径,就可以根据需要替换它们。请记住,每个 Java 版本可能需要不同的 JCE 库。您可能需要为 6、7 和 8 使用单独的 jar,具体取决于兼容性。
【讨论】:
以上是关于如何在 MacOSX 中为 JRE 7 安装无限强度 JCE?的主要内容,如果未能解决你的问题,请参考以下文章
jce_policy安装java密码扩展无限制权限策略文件安装
如何安装 JRE 或 JDK 以在 Windows 7 上运行 Android 开发人员工具?
powershell 此脚本允许您将Java Cryptography Extension(JCE)无限强度管辖区域策略文件“安装”到嵌入式JRE中