我正在使用eclipse编写Cert Parser, 我使用我的国家政府部门提供的课程,它可以解析我国家的专业证书。 但是我对某些事情没有什么麻烦, 编译代码时,控制台会显示以下信息:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to tw.com.chttl.hipki.CredentialBean
at CertParser.Read_Normal(CertParser.java:41)
at CertParser.<init>(CertParser.java:26)
at CertParser.main(CertParser.java:155)
关于ClassCastException问题,我知道是强制转换问题。 但我使用的类是String类型,如:
public String getNonce(){
return _credential.getNonce();
}
或
public String getSubjectDN(){
returnCertParser.getSubjectDN(_credential.getSignerCertificate(0));}
我的代码可能出错:
private int Read_Normal(JPanel panel){
String Field;
try{
FileInputStream file_inputstream=new FileInputStream(CA_Name);
CertificateFactory cf=CertificateFactory.getInstance("X.509");
CredentialBean bean=(CredentialBean)cf.generateCertificates(file_inputstream);
Field=bean.getSubjectDN();
CA_ItemData[0][0]="getSubjectDN";
CA_ItemData[0][1]=Field;
System.out.println("getSubjectDN:"+Field);
Field=bean.getIssuerDN();
CA_ItemData[1][0]="getIssuerDN";
CA_ItemData[1][1]=Field;
System.out.println("getIssuerDN:"+Field);
file_inputstream.close();
final JTable table = new JTable(CA_ItemData, columnNames);
TableColumn tc=null;
tc = table.getColumnModel().getColumn(1);
tc.setPreferredWidth(600);
panel.add(table);
}catch(Exception exception){
exception.printStackTrace();
return -1;
}
return 0;
}
这个类都是String类型,我的代码也是String。 这个问题是什么意思?
我的英语不是我国的校长,如果我有任何错误,请原谅我。
谢谢。
答案 0 :(得分:1)
您正在调用cf.generateCertificates
,它会返回一组证书(在本例中为一个列表)。
如果您只创建一个证书,则应调用cf.generateCertificate
,在这种情况下,您将能够成功转换返回的值。
或者,如果您确实想要创建多个证书,那么您将需要迭代返回的集合的元素,依次转换(和处理)每个元素。
答案 1 :(得分:0)
方法generateCertificates
返回一个arraylist(证书,也许是?),你试图将数组压缩成CredentialBean
变量。