我有带有Eclipse Luna应用程序的Java 1.7,在该应用程序中尝试在加载Java密钥库后获取其别名。
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(inputStream, password.toCharArray());
//Print aliases below
Enumeration<String> aliases=null;
try
{
aliases = ks.aliases();
}
catch (KeyStoreException e)
{
e.printStackTrace();
}
while (aliases.hasMoreElements())
{
String alias = aliases.nextElement();
System.out.println("Alias is: "+alias);
}
我能够在Java 1.6的Eclipse Indigo中使用此功能,但是在Java 1.7中使用Eclipse Luno的相同代码却给我以下错误:
java.security.KeyStoreException: Uninitialized keystore
at java.security.KeyStore.aliases(KeyStore.java:1002)
at sun.security.ssl.SunX509KeyManagerImpl.<init>(SunX509KeyManagerImpl.java:125)
at sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:68)
at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:259)
使用1.7时,我看到aliases
被设置为null
。不知道这是否取决于环境,但是到目前为止,这是我能够弄清楚的。我需要使用Java 1.7,因为我需要使用Java 6不支持的TLSV1.2。
有什么想法吗?