TrustManagerFactory IBM Java 1.7

时间:2013-05-28 08:16:40

标签: java client x509certificate keystore ibm-jvm

在我的Java应用程序中,我在客户端使用了Java的密钥库工具。我同时支持Oracle和IBM Java环境。基本上代码如下:

尝试{

        KeyStore ks = KeyStore.getInstance("JKS");

        MyResources gr = new MyResources(null);
        InputStream inpStream = gr.GetResourceAsStream(MYFILE);

        if (inpStream == null) {

        }

        ks.load(inpStream, MYPASSWORD);

        TrustManagerFactory Mytmf = null;

        try {
            Mytmf = TrustManagerFactory.getInstance("SUNX509");
        } catch (NoSuchAlgorithmException e) {
            Mytmf = TrustManagerFactory.getInstance("IbmX509");
        }

        Mytmf.init(ks);


    } catch (Exception e) {

    }

该程序在IBM JRE 1.6及更早版本中运行良好。在版本1.7中,如果连接尝试连接到服务器并且最后失败,则会收到以下异常:

线程“myThread”中的异常java.lang.NoClassDefFoundError:sun / security / validator / KeyStores 09:06:46>> at sun.security.ssl.X509TrustManagerImpl。(X509TrustManagerImpl.java:80) 09:06:46>> at sun.security.ssl.TrustManagerFactoryImpl $ SimpleFactory.getInstance(TrustManagerFactoryImpl.java:240) 09:06:46>> at sun.security.ssl.TrustManagerFactoryImpl.engineInit(TrustManagerFactoryImpl.java:79) 09:06:46>>在javax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:19) 09:06:46>> at MyTrustMgr.getTrustManager(MyTrustMgr.java:34)

你知道这个问题可能是什么原因吗?

1 个答案:

答案 0 :(得分:0)

无论原因是什么,代码都是错误的。如果使用TrustManagerFactory.getDefaultAlgorithm()作为参数,而不是try / catch块,则问题将消失。