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

8

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

error: package sun.security.pkcs11 does not exist
Provider p = new sun.security.pkcs11.SunPKCS11(is);

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


3
这是因为你依赖了JDK的一个内部(非API)包。 - reprogrammer
1
潜在重复的问题 https://dev59.com/a2jWa4cB1Zd3GeqPqWyO - schippi
5个回答

4

一个很好的链接,解释了为什么原帖作者一开始就不应该使用那个包! - jahroy
5
好的,不使用内部/弃用的API。现在问题是:sun.security.pkcs11的官方包等价物是什么? - Massimo

3

我曾经遇到过相同的问题,通过安装32位的JDK而不是64位的解决了它,肯定会起作用。


3

Oracle尚未发布API,参考oracle bug,Tom和Yassering的回答都是正确的。


2

由于Windows 64位不支持sunPKCS11,我假设您只是在64位Windows上进行编译环境设置,而运行时可能是Linux或其他支持的环境。

如果以上情况属实,为了使构建工作正常,请将32位jdk中的sunpkcs11.jar复制到64位jdk的jre\lib\ext目录下。这对我有用。

或者,您可以等待JDK8发布,该问题将被修复。


-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安装路径。但是当我运行我的应用程序时,仍然遇到同样的问题。


1
这是程序设计相关内容的翻译。 - Johann Philipp Strathausen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接