1

这是我启动java的方式

java -Djava.rmi.server.hostname=myhostname \
    -Djava.security.policy=/myprogram/java.policy \
    -Dcom.ibm.tools.attach.enable=no -jar \
    /myprogram/myjar.jar

的内容java.policy

grant codeBase "file:/myprogram/myjar.jar" {
  permission java.security.AllPermission;
};

我安装了新版本的 IBM Java

# rpm -qi java-1_8_0-ibm
Version     : 1.8.0_sr5.10
Release     : 30.24.1
Source RPM  : java-1_8_0-ibm-1.8.0_sr5.10-30.24.1.nosrc.rpm
Build Date  : Sun 18 Mar 2018 02:44:37 PM MDT

现在我收到此错误消息

Caused by: java.lang.SecurityException: Cannot locate policy or framework files!
    at javax.crypto.b.c(Unknown Source)
    ...

我使用的以前的版本没有显示同样的故障

# rpm -qi java-1_8_0-ibm
Version     : 1.8.0_sr5.10
Release     : 30.16.1
Source RPM  : java-1_8_0-ibm-1.8.0_sr5.10-30.16.1.nosrc.rpm
Build Date  : Tue 27 Feb 2018 10:22:44 AM MST

发行说明说

  • 2018 年 3 月 16 日星期五 pmonrealgonzalezsuse dot com

    • 修复了备选方案的优先级 [bsc#1085018]
  • 2018 年 3 月 14 日星期三 pmonrealgonzalezsuse dot com

    • 修复了更新时策略文件的符号链接 [bsc#1085018]
4

1 回答 1

1

RPM 文件列表包含有限和无限的策略文件

# rpm -ql java-1_8_0-ibm
/usr/lib64/jvm-private/java-1.8.0-ibm/jce/vanilla/limited/US_export_policy.jar
/usr/lib64/jvm-private/java-1.8.0-ibm/jce/vanilla/limited/local_policy.jar
/usr/lib64/jvm-private/java-1.8.0-ibm/jce/vanilla/unlimited/US_export_policy.jar
/usr/lib64/jvm-private/java-1.8.0-ibm/jce/vanilla/unlimited/local_policy.jar

对于 Java 8.0.5.10、Java 7.1.4.20、Java 7.0.10.20、Java 6.1.8.60 及更高版本,受限策略文件是默认设置。

这解释了为什么有限的策略文件现在是符号链接的。

对我来说,解决方法是使用以下方法指定无限的策略文件:

-Dcom.ibm.security.jurisdictionPolicyDir=/usr/lib64/jvm-private/java-1.8.0-ibm/jce/vanilla/unlimited
于 2018-03-20T22:54:18.940 回答