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

我正在尝试设置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。

最好的祝福。


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

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


转到您的项目属性,Java Build Path窗格,然后展开JRE系统库条目。 点击访问规则,然后点击修改...按钮。 添加访问规则,使访问规则模式sun / security / pkcs11 / ** 。 这会让Eclipse停止抱怨。


如果您64 bit runtime on Windows使用64 bit runtime on Windows还有一个原因。 在这种情况下,必要的课程根本就不存在。

解决方案:使用32位运行时。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6880559

链接地址: http://www.djcxy.com/p/12819.html

上一篇: Access restriction on sun.security.pkcs11.SunPKCS11

下一篇: What does a "restricted library" really mean in Java?