TrustManagerFactory IBM Java 1.7



在我的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在sun.security.ssl.X509TrustManagerImpl 09:06:46>>。(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>> at javax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:19)09:06:46>> at MyTrustMgr.getTrustManager(MyTrustMgr.java:34)

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

不管是什么原因,代码都是错误的。如果使用trustmanagerfactory . getdefaultalgalgorithm()作为参数,而不是使用try/catch块,问题就会消失。

相关内容

  • 没有找到相关文章

最新更新