私の 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>> で sun.security.ssl.TrustManagerFactoryImpl.engineInit(TrustManagerFactoryImpl.java:79) 09:06:46>> でjavax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:19) 09:06:46>> MyTrustMgr.getTrustManager(MyTrustMgr.java:34)で
この問題の原因は何か分かりますか?