0

我正在尝试使用 CardScan SDK 中的 Java 示例数据库程序。

我正在处理位于 Java/JNI 和 Java/Database 中的文件。该程序必须使用 32 位 JRE 运行。通过卸载 Java 并安装 32 位版本,然后重新添加 Java 的系统路径,我能够在 64 位机器上执行此操作。我可以通过双击 SDKData.bat 文件成功运行程序并与 CardScan 数据库文件 (.cdb) 交互,但是当我打开源文件进行编辑并编辑 Java.library.path 以包含所需的库 (CRTK_JNI .dll),我到处都得到 UnsatisfiedLinkErrors:


线程“主”java.lang.UnsatisfiedLinkError 中的异常:sdkdata.CRTK.CRTK.CRTK_Init (Native Method)处的 sdkdata.CRTK.CRTK_Init ([I)
I。(CRTK.java:239)
sdkdata.SDKData.( SDKData.java:97)
在 sdkdata.SDKData.main(SDKData.java:643)
Java 结果:1

大概这是因为库没有正确加载而发生的。

我需要做什么才能满负荷运行和编辑程序(CRTK_JNI 中的所有本机功能都正常工作)?

4

2 回答 2

2

大概这是因为库没有正确加载而发生的。

相反。库加载完成。您不是从System.load()/loadLibrary()调用中得到的,而是在调用本机方法时遇到错误,该方法应该具有签名:

package sdkdata;

public class CRTK
{
  public native int CRTK_Init(int[]);
}

所以它不存在,或者您在没有重新生成 .h 和 .c 文件的情况下更改了签名,或者您以其他方式手动破坏了声明。

发布您的代码。

于 2012-08-13T10:07:50.890 回答
0

澄清一下,CardScan API 正式不支持此 Java 示例程序 - 尝试将 API 与仅依赖于实验性实现的不受支持的语言一起使用是个坏主意。我最终使用了一种受支持的语言(Visual Basic)来处理 SDK;如果看到这个问题的人碰巧在使用 CardScan API 时遇到困难,这里是我在 Github 上的 VB 实现。

于 2013-01-22T21:04:58.107 回答