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 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:46 >> в 09:09) javax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:19) 09:06:46>> в MyTrustMgr.getTrustManager(MyTrustMgr.java:34)

У вас есть идеи, что может быть причиной этой проблемы?

1 ответ

Какой бы ни была причина, код неправильный. Если вместо аргумента try / catch использовать аргумент TrustManagerFactory.getDefaultAlgorithm(), проблема исчезнет.

Другие вопросы по тегам