升级到Java 7后编译错误:包sun.security.pkcs11不存在

时间:2012-12-04 19:43:40

标签: java security pkcs#11

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

        错误:包sun.security.pkcs11不存在
        提供者p = new sun.security.pkcs11.SunPKCS11(是);

我正在运行Windows 7 64位。如果我切换回Java 6,我可以正常编译,但这不再是一个选项。我没有在线找到解决方案。有谁知道如何解决这个问题?

5 个答案:

答案 0 :(得分:4)

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

请参阅Why Developers Should Not Write Programs That Call 'sun' Packages

答案 1 :(得分:3)

我遇到了同样的问题,我通过安装64位的32位JDK insteade来解决它,并确定它能正常工作。

答案 2 :(得分:3)

oracle oracle bug尚未发布API,tom和yassering的答案都是核心。

答案 3 :(得分:1)

由于Windows 64位中没有sunPKCS11支持,我假设您仅使用Windows 64位进行构建环境,而您的运行时可能是Linux或其他受支持的环境。

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

或者,等待jdk8固定的地方。

答案 4 :(得分:-1)

我有同样的错误。

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安装。我运行我的应用程序时遇到同样的问题。