我尝试开发一个访问智能卡的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
}
}
,例外是:
Caused by: java.lang.NoClassDefFoundError: sun/security/pkcs11/SunPKCS11
at javafxapplication7.SampleController.handleButtonAction(SampleController.java:26)
答案 0 :(得分:3)
只需在64位JDK的旁边(或代替)安装32位JDK,并确保使用32位版本编译和签署JAR / COD文件。
实际上它是64位版本中的错误.. http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=f1279f413fd19e3a247022d6dcca9?bug_id=7105065
我在以下讨论中找到了它: -
答案 1 :(得分:0)
无论您遇到此特定问题,请不要使用sun.*
课程。它们不是为公共用途而设计的。
您可能希望使用SunPKCS11
JCE提供商来使用智能卡。请查看本指南,以帮助您入门:http://docs.oracle.com/javase/1.5.0/docs/guide/security/p11guide.html。