在我的 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)
你知道这个问题可能是什么原因吗?