java.libary.path 使用 Eclipse 未检测到 Jacob 1.14.3 DLL
Jacob 1.14.3 DLL no detected by the java.libary.path using Eclipse
我正在尝试实现库 JACOB 以与某些支付设备(例如 PINPAD)进行通信。我已经创建了一个 java 项目但是当主要 class 执行在运行时使用 DLL 的方法时给出错误 no jacob-1.14.3-x64 in java.library.path
在这里你可以找到我正在使用的构建项目:
- 操作系统:Windows10 64位
- JRE/JDK 版本:1.8.0_181 64 位*(从 32 位更改为 64 位)*
- Eclipse:光子释放 (4.8.0)
- Maven 版本:3.5.4
- JACOB 版本:1.14.3(文件 64[x64] 和 32[x86])
在这里你可以找到我已经尝试过的解决方案
- Add the jacob.jar as external library and add the folder where the dlls as native library.
使用java库路径的命令
–Djava.library.path=C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\
将 dll 文件添加到 /Java/jdk/jre/bin
和 /Java/jdk/jre/lib/ext
- 使用 maven 命令添加了依赖项
mvn install:install-file -Dfile=C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\jacob-1.14.3-x64.dll -DgroupId=jacob -DartifactId=jacob-dll -Dversion=1.14.3 -Dpackaging=dll -DgeneratePom=true
mvn install:install-file -Dfile=C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\jacob.jar -DgroupId=jacob -DartifactId=jacob-jar -Dversion=1.14.3 -Dpackaging=jar -DgeneratePom=true
- 添加依赖项到 maven pom.xml
我在 stack-overflow 中搜索了不同的问题,但尝试任何方法仍然无效,我想知道是否有人有类似的问题,我还可以尝试什么来解决它。非常感谢您的宝贵时间 :D
您必须验证 java.library.path
是否正确。
我在写 -Djava.library.path="C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\";
和 -Djava.library.path=C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\;
你必须确保你没有使用
- "" to surround the path
- ; at the end
- and that should be \ at the end of the path to indicate that is a folder that contains the dlls.
我解决后,现在执行程序时出现以下错误。
com.jacob.com.ComFailException: Can't co-create object
仅供参考,您的初始问题:切换到 64 位 JDK 因为无法从 32 位 jre/jdk.
调用 64 位 dll
关于您的下一个错误:
Can't co-create object
在使用 COM 对象之前,它必须在系统中注册(例如,它的 CLSID 或 ProgID 必须存在于 Windows 注册表中)。如果未注册,regasm.exe 实用程序可用于执行此操作:
使用:Regsvr32 PathToDll
或者您也可以尝试:%systemroot%\Microsoft.NET\Framework64\vX.X\RegAsm.exe /verbose /nologo /codebase PINPAD.dll
(将 vX.X 替换为您系统上安装的版本,例如 v3.0 或 v4.0.30319。如果您想使用 32 位 dll,请使用 ...\Framework\...
而不是 ...\Framework64\...
)
注册后 CoCreateInstance()
API 方法可用于获取对对象公开的接口的引用并调用其方法。可以找到更多详细信息 here。
我正在尝试实现库 JACOB 以与某些支付设备(例如 PINPAD)进行通信。我已经创建了一个 java 项目但是当主要 class 执行在运行时使用 DLL 的方法时给出错误 no jacob-1.14.3-x64 in java.library.path
在这里你可以找到我正在使用的构建项目:
- 操作系统:Windows10 64位
- JRE/JDK 版本:1.8.0_181 64 位*(从 32 位更改为 64 位)*
- Eclipse:光子释放 (4.8.0)
- Maven 版本:3.5.4
- JACOB 版本:1.14.3(文件 64[x64] 和 32[x86])
在这里你可以找到我已经尝试过的解决方案
- Add the jacob.jar as external library and add the folder where the dlls as native library.
使用java库路径的命令
–Djava.library.path=C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\
将 dll 文件添加到
/Java/jdk/jre/bin
和/Java/jdk/jre/lib/ext
- 使用 maven 命令添加了依赖项
mvn install:install-file -Dfile=C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\jacob-1.14.3-x64.dll -DgroupId=jacob -DartifactId=jacob-dll -Dversion=1.14.3 -Dpackaging=dll -DgeneratePom=true
mvn install:install-file -Dfile=C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\jacob.jar -DgroupId=jacob -DartifactId=jacob-jar -Dversion=1.14.3 -Dpackaging=jar -DgeneratePom=true
- 添加依赖项到 maven pom.xml
我在 stack-overflow 中搜索了不同的问题,但尝试任何方法仍然无效,我想知道是否有人有类似的问题,我还可以尝试什么来解决它。非常感谢您的宝贵时间 :D
您必须验证 java.library.path
是否正确。
我在写 -Djava.library.path="C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\";
和 -Djava.library.path=C:\Users\adazat\Downloads\ClienteImplantadoJava\jacob-1.14.3\;
你必须确保你没有使用
- "" to surround the path
- ; at the end
- and that should be \ at the end of the path to indicate that is a folder that contains the dlls.
我解决后,现在执行程序时出现以下错误。
com.jacob.com.ComFailException: Can't co-create object
仅供参考,您的初始问题:切换到 64 位 JDK 因为无法从 32 位 jre/jdk.
调用 64 位 dll关于您的下一个错误:
Can't co-create object
在使用 COM 对象之前,它必须在系统中注册(例如,它的 CLSID 或 ProgID 必须存在于 Windows 注册表中)。如果未注册,regasm.exe 实用程序可用于执行此操作:
使用:Regsvr32 PathToDll
或者您也可以尝试:%systemroot%\Microsoft.NET\Framework64\vX.X\RegAsm.exe /verbose /nologo /codebase PINPAD.dll
(将 vX.X 替换为您系统上安装的版本,例如 v3.0 或 v4.0.30319。如果您想使用 32 位 dll,请使用 ...\Framework\...
而不是 ...\Framework64\...
)
注册后 CoCreateInstance()
API 方法可用于获取对对象公开的接口的引用并调用其方法。可以找到更多详细信息 here。