1

私が書いた Java アプリケーションを使用して、eToken を使用して PDF ファイルに署名しようとしています。Java 6.0.30 を搭載した Windows 7 64 ビット版を使用しています。

アプリケーションを実行すると、例外が発生します

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で発生しているため、Javaセキュリティポリシーと関係があります。つまり、dllはWindows 7内の保護されたディレクトリ内にありますか?

前もって感謝します。

4

2 に答える 2

5

pkcs11 は、Java の 64 ビット バージョンのいずれにも実装されていないようです。32 ビット版でのみ使用できます。

そのため、32 ビット版の Java をインストールして使用する予定です。

于 2012-06-14T06:34:31.820 に答える
0

同様の問題があり、jre-8u31-windows-x64 で署名コードをテストしたところ、成功しました。したがって、このJavaバージョンを使用することをお勧めします。私のシナリオでは、e-defter と呼ばれる政府のアプリケーション用にサイズが約 196MB の xml ファイルに署名する必要がありました。このファイルに署名するには、Java は約 3GB のメモリー (HEAP) を必要とします。このメモリは 64 ビット Java で取得できました。

于 2015-02-26T13:14:11.707 に答える