我尝试开发一个访问智能卡的javafx应用程序。
我有一个简单的概念证明,如下所示:
package javafxapplication7;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import sun.security.pkcs11.SunPKCS11;
public class SampleController implements Initializable {
@FXML
private Label label;
@FXML
private void handleButtonAction(ActionEvent event) {
SunPKCS11 a = new SunPKCS11();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}而exepcion是:
Caused by: java.lang.NoClassDefFoundError: sun/security/pkcs11/SunPKCS11
at javafxapplication7.SampleController.handleButtonAction(SampleController.java:26)发布于 2013-04-03 20:27:09
只需在64位JDK旁边(或改为)安装32位JDK,并确保使用32位版本编译JAR/COD文件并对其进行签名。
实际上,它是64位版本中的错误。http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=f1279f413fd19e3a247022d6dcca9?bug_id=7105065
我在以下讨论中发现了这一点:
http://www.java.net/node/703858
http://tai-dev.blog.co.uk/2009/11/11/are-you-seeing-the-java-lang-noclassdeffounderror-sun-security-pkcs11-sunpkcs11-error-when-signing-your-rim-blackberry-j2me-apps-7352729/
http://community.igniterealtime.org/thread/30821
发布于 2013-04-03 20:24:57
不管您为什么会遇到这个特定问题,都不要使用sun.*类。它们不是为公共使用而设计的。
您可能希望使用SunPKCS11 JCE提供程序来处理智能卡。看看这个帮助你入门的指南:http://docs.oracle.com/javase/1.5.0/docs/guide/security/p11guide.html。
https://stackoverflow.com/questions/15787245
复制相似问题