首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.io.IOException:%1不是有效的Win32应用程序

java.io.IOException:%1不是有效的Win32应用程序
EN

Stack Overflow用户
提问于 2013-06-20 07:43:54
回答 2查看 5.5K关注 0票数 3

我正在尝试对XML文档进行数字签名。为此,我有两个选择。有一个由爱沙尼亚认证中心创建的程序员库,还有一个脚本,运行一个由银行编写的Java代码。如果使用官方(认证中心)库,那么一切都会像魅力一样,稍加调整,但当涉及到银行脚本时,就会导致错误:

代码语言:javascript
复制
java.io.IOException: %1 is not a valid Win32 application.
esteid-pkcs11
        at iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.connect(Native Method)
        at iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.<init>(PKCS11Implementation.java:166)
        at iaik.pkcs.pkcs11.wrapper.PKCS11Connector.connectToPKCS11Module(PKCS11Connector.java:75)
        at iaik.pkcs.pkcs11.Module.getInstance(Module.java:202)
        at client.smartcard.SmartcardHelper.initializePKCS11Module(SmartcardHelper.java:46)
        at client.smartcard.SmartcardHelper.initialize(SmartcardHelper.java:29)
        at client.smartcard.SmartcardHelper.initialize(SmartcardHelper.java:21)
        at client.Signer.main(Signer.java:36)
10:03:31 ERROR - Signing failed: PKCS11 initialization failed
java.lang.RuntimeException: PKCS11 initialization failed
        at client.smartcard.SmartcardHelper.initializePKCS11Module(SmartcardHelper.java:52)
        at client.smartcard.SmartcardHelper.initialize(SmartcardHelper.java:29)
        at client.smartcard.SmartcardHelper.initialize(SmartcardHelper.java:21)
        at client.Signer.main(Signer.java:36)
Caused by: java.io.IOException: %1 is not a valid Win32 application.
esteid-pkcs11
        at iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.connect(Native Method)
        at iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.<init>(PKCS11Implementation.java:166)
        at iaik.pkcs.pkcs11.wrapper.PKCS11Connector.connectToPKCS11Module(PKCS11Connector.java:75)
        at iaik.pkcs.pkcs11.Module.getInstance(Module.java:202)
        at client.smartcard.SmartcardHelper.initializePKCS11Module(SmartcardHelper.java:46)
        ... 3 more

Esteid-pkcs11文件是一个特定于国家的dll文件.我在谷歌上读过很多关于同样错误导致的问题的回应,但似乎没有任何一个回复能做到这一点。我已经安装了JDK(64位)和JRE(32位)。我想,可能我尝试打开的.dll文件是32位,所以我将JAVA_HOME路径更改为32位JRE,但是它写的如下

无法在amd 64位平台上加载IA 32位.dll .

所以我想这不是比特的问题。在处理了几个小时的环境变量之后,我觉得这可能是银行脚本的一个问题。情况会是这样吗?如果不是,还有什么会导致这个错误呢?

编辑:很明显,我尝试使用C库进行签名,但在使用Java库时,它给了我一个错误。

java.io.IOException: %1 is not a valid Win32 application. opensc-pkcs11.dll

我100%肯定opensc-pkcs11.dll是一个64位的dll,但我想知道控制台是否没有访问system32文件夹的权限。情况会是这样吗?

EN

回答 2

Stack Overflow用户

发布于 2018-02-16 10:07:14

误差

原因: java.io.IOException:%1不是有效的Win32应用程序。

这是我试图通过Sun PKCS#11提供程序从64位PKCS#11环境中使用32位PKCS#11 DLL时得到的结果。

当我切换到64位PKCS#11 DLL时,错误不再发生.

我认为你的‘崇敬-pkcs11 11’文件是一个32位DLL。

票数 4
EN

Stack Overflow用户

发布于 2019-11-28 15:56:39

也许opensc-pkcs11.dll包含对同一目录中其他dll的引用。

我与Gemalto (Safenet) crpytoki.dll也有类似的错误。解决方案是将包含cryptoki.dll的目录放到Windows中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17207967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档