2012-06-14 42 views
1

我试图用我写的一个java应用程序来使用eToken来签署PDF文件。我正在使用Java 6.0.30的Windows 7 64位版本。java.lang.UnsatisfiedLinkError:java6中的java.library.path中没有j2pkcs11

当我跑我得到一个异常说

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位。

由于异常进入AccessController,即dll是否在Windows 7内的受保护目录内,是否与java安全策略有关?

在此先感谢。

回答

5

看起来pkcs11并未在任何64位版本的java中实现。它仅在32位版本中可用。

所以我打算安装一个32位版本的java并使用它。

+1

在Java8中对pkcs11的支持是固定的 – marioosh

0

我有类似的问题,并测试了jre-8u31-windows-x64上的签名代码,并取得了成功。所以我建议使用这个Java版本。在我的场景中,我必须签署一个名为e-defter的政府应用程序,大小约为196MB的xml文件。为了签署这个文件,java需要大约3GB的内存(HEAP)。我可以用64位Java获得这个内存。

相关问题