对 sun.security.pkcs11.SunPKCS111 的访问限制

2022-09-02 23:15:30

我正在尝试设置用于访问智能卡的 PKCS11 提供程序。我在系统上安装了一个 PKCS11 库,并按照 Java PKCS#11 参考指南中的说明进行操作。在引用中,它们只需创建一个实例,并将配置文件的名称传递给构造函数。当我尝试编译以下代码时sun.security.pkcs11.SunPKCS11

Provider p = new sun.security.pkcs11.SunPKCS11("pkcs11.cfg");
Security.addProvider(p);

我收到以下错误。

访问限制:构造函数 SunPKCS11(String) 由于对所需库 /usr/lib/jvm/java-6-sun-1.6.0.24/jre/lib/ext/sunpkcs11 的限制而无法访问.jar

我做错了什么?我在 Ubuntu x86 下使用 Eclipse 3.5 和 Java SE 1.6。

此致敬意。


答案 1

查看项目的属性并打开选项卡。我假设您已经将 设置为执行环境。将其更改为工作区 JRE 或手动选择特定的 JRE。LibrariesJRE System Library

背景:通过选择执行环境,您说您要编写符合 Java API 的应用程序。该类位于 sun 包中,该包将其标记为 Sun Java 实现的专有,并且不是标准 Java API 的一部分。sun.security.pkcs11.SunPKCS11


答案 2

转到项目属性的“Java 生成路径”窗格,然后展开“JRE 系统库”条目。单击访问规则,然后单击编辑...按钮。添加一个访问规则,使规则模式 sun/security/pkcs11/**可访问。这将使Eclipse停止抱怨。