java.lang.UnsatisfiedLinkError: нет j2pkcs11 в java.library.path в java6

Я пытаюсь использовать eToken, чтобы подписать PDF-файл с помощью Java-приложения, которое я написал. Я использую 64-разрядную версию Windows 7 с Java 6.0.30.

Когда я запускаю приложение, я получаю исключение, говорящее

Exception in thread "signer" java.lang.UnsatisfiedLinkError: no j2pkcs11 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1028)
    at sun.security.pkcs11.wrapper.PKCS11$1.run(PKCS11.java:88)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.pkcs11.wrapper.PKCS11.<clinit>(PKCS11.java:86)
    at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:281)
    at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:90)
    at com.greytip.cougar.pdfsigner.PdfSigner.getProvider(PdfSigner.java:364)

Но когда я посмотрел вверх j2pkcs11.dll файл доступен для jdk 1.5, но не доступен в моем jdk 1.6 64 bit.

Это связано с политикой безопасности Java, так как исключение приходит внутрь AccessControllerт.е. DLL находится внутри защищенного каталога внутри Windows 7?

Заранее спасибо.

2 ответа

Решение

Похоже, что pkcs11 не реализован ни в одной из 64-битных версий Java. Он доступен только в 32-битной версии.

Поэтому я планирую установить 32-битную версию Java и работать с ней.

У меня была похожая проблема и я тестировал код подписи на jre-8u31-windows-x64 и имел успех. Поэтому я предлагаю использовать эту версию Java. В моем сценарии мне пришлось подписать xml-файл размером около 196 МБ для правительственного приложения под названием e-defter. Чтобы подписать этот файл, java нужна память (HEAP) около 3 ГБ. Я мог бы получить эту память с 64-битной Java.

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