0

我正在使用 Eclipse 编写证书解析器,我使用我所在国家/地区的政府部门提供的课程,它可以解析我所在国家/地区的专业证书。但是我有一点小麻烦,当我编译我的代码时,控制台会显示这些信息:</p>

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 问题,我知道是一个强制转换问题。但是我使用的class是String类型,比如:</p>

public String getNonce(){ return _credential.getNonce(); }

或者

public String getSubjectDN(){ returnCertParser.getSubjectDN(_credential.getSignerCertificate(0));}

以及我的代码中可能出现的错误:</p>

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;
}

这个类都是字符串类型,我的代码也是字符串。这个问题是什么意思?

我的英语在我的国家不是主要的,如果我有任何错误,请原谅我。

谢谢你。

4

2 回答 2

1

您正在调用cf.generateCertificates,它返回证书集合(在本例中为列表)。

如果您只创建一个证书,则应调用cf.generateCertificate,在这种情况下,您将能够成功转换返回的值。

或者,如果您确实想要创建多个证书,那么您将需要遍历返回集合的元素,依次转换(和处理)每个元素。

于 2013-06-04T15:20:19.737 回答
0

该方法generateCertificates返回一个数组列表(可能是证书?),然后您尝试将数组压缩到一个CredentialBean变量中。

于 2013-06-04T15:20:03.633 回答