我使用的是OS X 10.11.6“El Capitan”,我需要使用USB令牌对银行订单进行数字签名。它依赖于Java,但它遇到了问题。
我调试了Java控制台,这就是结果;正如您所看到的,错误是“找不到合适的图像。打开()失败并且errno = 1”指向.jnilib文件(可能是数字证书?)
以下是调试器所说的内容:
basic: Applet inizializzata
basic: Avvio applet
basic: rollup prestazioni completato
SIGNAPPLET : isStarted false
SIGNAPPLET : start() : inizio
SIGNAPPLET : libraryName=libbit4opki.dylib
SIGNAPPLET : pathWrapperClient=libpkcs11wrapper.jnilib
SIGNAPPLET : initializing manager pkcs11 /Users/tyrexionibus/postecert/libbit4opki.dylib wrapper path /Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib
SIGNAPPLET : ERRORE Throwable : /Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib: dlopen(/Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib, 1): no suitable image found. Did find:
/Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib: open() failed with errno=1
SIGNAPPLET : showCERTIFICATEPanel
it.postecom.pkcs.pkcs11.GestoreHWSW$Exc: Throwable : /Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib: dlopen(/Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib, 1): no suitable image found. Did find:
/Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib: open() failed with errno=1
at it.postecom.pkcs.pkcs11.GestoreHWSW.<init>(GestoreHWSW.java:50)
at it.postecom.pkcs.pkcs11.GestoreHWSW.getInstance(GestoreHWSW.java:59)
at it.postecom.bpiol.applet.SignApplet.start(SignApplet.java:239)
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.start(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
SIGNAPPLET : start() - fine
SIGNAPPLET : isStarted true
我已经走到了尽头,我再也无法应对了。尝试了不同版本的JRE,即使是遗留版本也是如此。试图卸载JRE和JDK,并回滚到Apple Java 1.6遗留问题,没有结果。
你能帮忙吗?
答案 0 :(得分:0)
.jnilib不是证书,而是您的应用程序试图通过Java Native Interface(JNI)调用的本机库。显然有些代码不是纯Java,但需要一些特定于操作系统的代码,最有可能访问加密棒的硬件。
库是否在错误消息中给出的路径?
该位置的库是OSX二进制文件吗?
是否具有执行权限?