Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java无法打开errno=1的文件_Java_Debugging - Fatal编程技术网

Java无法打开errno=1的文件

Java无法打开errno=1的文件,java,debugging,Java,Debugging,我使用的是OS X 10.11.6“El Capitan”,我需要使用USB令牌对银行订单进行数字签名。它依赖于Java,但遇到了一些问题 我调试了Java控制台,结果就是这样;如您所见,错误是“找不到合适的映像。Open()失败,错误号为1”,它指向.jnilib文件(可能是数字证书?) 以下是调试器告诉我们的: basic: Applet inizializzata basic: Avvio applet basic: rollup prestazioni completato SIGNAP

我使用的是OS X 10.11.6“El Capitan”,我需要使用USB令牌对银行订单进行数字签名。它依赖于Java,但遇到了一些问题

我调试了Java控制台,结果就是这样;如您所见,错误是“找不到合适的映像。Open()失败,错误号为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
basic:Applet
基本:Avvio小程序
基本:汇总prestazioni completato
SIGNAPPLET:isStarted false
SIGNAPPLET:start():i
SIGNAPPLET:libraryName=libbit4opki.dylib
SIGNAPPLET:pathWrapperClient=libpkcs11wrapper.jnilib
SIGNAPPLET:初始化manager pkcs11/Users/tyrexionibus/postecert/libbit4opki.dylib包装路径/Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib
SIGNAPPLET:ERRORE Throwable:/Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib:dlopen(/Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib,1):未找到合适的映像。确实发现:
/Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib:open()失败,错误号为1
SIGNAPPLET:showCERTIFICATEPanel
it.postecom.pkcs.pkcs11.GestoreHWSW$Exc:Throwable:/Users/tyrexionibus/posterecert/libpkcs11wrapper.jnilib:dlopen(/Users/tyrexionibus/posterecert/libpkcs11wrapper.jnilib,1):未找到合适的映像。确实发现:
/Users/tyrexionibus/postecert/libpkcs11wrapper.jnilib:open()失败,错误号为1
在it.postecom.pkcs.pkcs11.GestoreHWSW.(GestoreHWSW.java:50)
位于it.postecom.pkcs.pkcs11.GestoreHWSW.getInstance(GestoreHWSW.java:59)
在it.postecom.bpiol.applet.SignApplet.start(SignApplet.java:239)
位于com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.start(未知源)
位于sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(未知源)
运行(Thread.java:745)
SIGNAPPLET:start()-很好
SIGNAPPLET:isStarted true
我已经走到了死胡同,我再也对付不了它了。毫不费力地尝试了不同版本的JRE,甚至是遗留版本。尝试卸载JRE和JDK,并回滚到Apple Java 1.6 legacy,但没有结果


您能帮忙吗?

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

  • 库是否位于错误消息中给定的路径

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

  • 它有执行权限吗


这可能是权限错误,errno 1表示操作系统不允许该操作。换句话说,Java程序是不允许打开库的。您是否考虑过查找
errno
value 1?我如何授予Java对该.jnilib库的执行权限?对不起,OS X不是我的OS。。。在Linux上,我会使用
chmod u+x
(或者
chmod a+x
来授予每个人执行权限)。谷歌告诉我,你也可以在“文件”菜单的“信息”对话框中设置文件权限。但是你检查过这个文件是否真的是一个OSX库吗?我无法真正验证OSX上的jnilib是否需要执行权限。