2015-09-03 1 views
1

Я создал keyStore в java1.4, используя этот код.Ошибка в классе sun.security.pkcs11.SunPKCS11

`public static void main(String[] args) 
     throws IOException, DocumentException, GeneralSecurityException { 
String pkcs11Config = "name=eToken\nlibrary=C://WINDOWS//system32//eTPKCS11.dll"; 
java.io.ByteArrayInputStream pkcs11ConfigStream = new java.io.ByteArrayInputStream(pkcs11Config.getBytes()); 
sun.security.pkcs11.SunPKCS11 providerPKCS11 = new sun.security.pkcs11.SunPKCS11(pkcs11ConfigStream); 
java.security.Security.addProvider(providerPKCS11); 

// Get provider KeyStore and login with PIN 
String pin = "123456"; 
java.security.KeyStore keyStore =java.security.KeyStore.getInstance("PKCS11", providerPKCS11); 
keyStore.load(null, pin.toCharArray()); 

// Enumerate items (certificates and private keys) in the KeyStore 
java.util.Enumeration<String> aliases = keyStore.aliases(); 
String alias=null; 
while (aliases.hasMoreElements()) { 
alias = aliases.nextElement(); 
System.out.println(alias); 

}}  

Но я получаю сообщение об ошибке

`Error(2,28): cannot access class sun.security.pkcs11.SunPKCS11; class file has wrong version 49.0, should be 45.3 or 46.0 or 47.0 or 48.0` 

Пожалуйста, скажите мне решение. Как я могу загрузить класс версии ниже 49, как 48 и т.д.

+0

У вас смешанные классы, скомпилированные более поздним JDK с вашим кодом 1.4. Обновить. 1.4 вышел из поддержки много лет назад. – EJP

+0

Я работаю над проектом, который находится в java 1.4, поэтому я не могу его обновить, потому что проект уже запущен. @EJP –

+0

Так что не вводите код, скомпилированный более поздним JDK. Это ваше ограничение: наблюдайте это. – EJP

ответ

1

SunPKCS11 был введен в Java 1.5

Вы должны либо обновить версию Java или оставаться не в состоянии использовать его.

Подъем проекта не является чем-то необычным. «Проект уже запущен» не является причиной, чтобы избежать этого, поскольку это ожидаемая часть непрерывного процесса разработки.