Java无法打开errno = 1的文件

时间:2017-03-10 08:14:32

标签: java debugging

我使用的是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遗留问题,没有结果。

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

.jnilib不是证书,而是您的应用程序试图通过Java Native Interface(JNI)调用的本机库。显然有些代码不是纯Java,但需要一些特定于操作系统的代码,最有可能访问加密棒的硬件。

  • 库是否在错误消息中给出的路径?

  • 该位置的库是OSX二进制文件吗?

  • 是否具有执行权限?