调用使用dll文件的jar的api函数的问题

时间:2014-02-01 02:20:46

标签: dll jar java-native-interface

我的任务:我正在使用Hansoft(敏捷项目管理工具)sdk来使用它的api函数从我们本地实现的Hansoft Server中提取数据。

当前状态: 我的开发环境设置如下:   Java - 1.7.0.51(64位),   Eclipse - 适用于Windows 64位和64位的Juno Service Release 2   Windows 7 - 64位。

jar中的大多数api函数(本机函数)都是用C ++实现的,所以sdk同时包含jar和dll文件(基于我的开发环境,我使用的是skd文件夹中的hpmsdk.jar和HPMSdkJavaJNI.dll)目录(HansoftSDK_7_502 \ Win32 \ JavaSdkx64 \ lib))。您可以从http://www.hansoft.com/support/downloads/

中的“Hansoft SDK& integration”部分下载sdk zip HansoftSDK_7_502.zip

我在Eclipse中创建了一个java项目,并在项目构建路径中添加了Hansoft api jar(hpmsdk.jar),并将dll(HPMSdkJavaJNI.dll)添加到jar(hpmsdk.jar)本机库位置。以下是我的程序结构和库路径。

Program Structure

Library path

遇到问题:当我从Eclipse运行示例java程序时,我收到错误“sessionOpen失败并显示错误:在当前路径中找不到SDK。 (null)“在Jframe中显示如下: Jframe

正如我所提到的,我已经添加了dll文件,但我不确定为什么我会收到SessionOpen失败。在执行函数HPMSdkSession.SessionOpen(来自skd目录HansoftSDK_7_502 \ Samples \ SimpleJava \ src的HansoftSDKSample_SimpleJava.java)中从jar调用第一次使用dll函数的代码中发生此错误。我已经在指向我们当地的Hansoft服务器和凭证的参数中给出了更正值。

m_Session = HPMSdkSession.SessionOpen("localhost", 0000, "Company Projects", "SDK", "SDK", m_Callback, null, true, debugMode, 0, "", "", null);

我已尝试过各种选项并花费大量时间来解决此问题,但我发现很难对此问题进行排序。如果我需要参考任何其他dll或任何替代方案,请尽快对此问题进行排序。

任何有任何帮助的人都非常感谢。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我刚刚使用OpenJDK 1.7在Linux上遇到了Hansofts SDK的相同问题。 请求的DLL是主SDK dll(HPMsdk。)。 为了解决这个问题,我在评论中遵循了Anandhas的建议并将SessionOpen称为:

m_Session = HPMSdkSession.SessionOpen("localhost", 0000, "Company Projects", "SDK", "SDK", m_Callback, null, true, debugMode, 0, "", "/path/to/sdk/dll/folder", null);