8

我刚刚从 Java 6 升级到 Java 7 SDK,现在在我的 ant 构建中出现以下错误:

错误:包 sun.security.pkcs11 不存在
Provider p = new sun.security.pkcs11.SunPKCS11(is);

我正在运行 Windows 7 64 位。如果我切换回 Java 6,我可以编译得很好,但这不再是一种选择。我没有太多运气在网上找到解决方案。有人知道如何解决这个问题吗?

4

5 回答 5

4

您必须将您的应用程序转换为使用不受限制的 API。当你做了这样的事情时,编译器会非常严格地警告你——这是面对这些警告继续进行的结果。

了解为什么开发人员不应该编写调用“sun”包的程序

于 2012-12-04T19:53:20.380 回答
3

该 API 尚未由 oracle oracle bug发布,tom 和 yassering 的答案都是正确的。

于 2013-04-04T06:04:32.183 回答
3

我遇到了同样的问题,我通过安装 32 位 JDK 而不是 64 位来解决它,并确保它可以工作。

于 2012-12-05T05:21:17.380 回答
2

由于 Windows 64 位不支持 sunPKCS11,我假设您仅将 Windows 64 位用于构建环境,并且您的运行时可能是 linux 或其他受支持的环境。

如果上述情况属实,那么为了使构建工作,将 sunpkcs11.jar 从 32 位 jdk 复制并复制到 jre\lib\ext 下的 64 位 jdk。这对我有用。

或者,或者等待其固定的 jdk8。

于 2013-11-13T05:40:13.543 回答
-2

我有同样的错误。

Only a type can be imported. sun.security.pkcs11.wrapper.CK_AES_CTR_PARAMS resolves to a package

我安装了带有 jdk 7x64 的 Windows 7 x64,然后用 jdk 7x32 替换。我还确保我的 JAVA_HOME 设置为新的 jdk 安装。当我运行我的应用程序时,我遇到了同样的问题。

于 2014-06-17T07:15:03.990 回答