gpt4 book ai didi

java.lang.UnsatisfiedLinkError - native 方法问题

转载 作者:行者123 更新时间:2023-12-01 06:16:28 26 4
gpt4 key购买 nike

我在 Java (Eclipse) 中遇到有关 dll 使用的问题。到目前为止,我遇到了以下问题:

Uncaught Exception for agent SomeAgent 
java.lang.UnsatisfiedLinkError: SomePackage.SomeClass.SomeNativeMethod(II)Z
[...]
at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:344)
at jade.core.Agent$ActiveLifeCycle.execute(Agent.java:1532)
at jade.core.Agent.run(Agent.java:1471)
at java.lang.Thread.run(Thread.java:745)

我不知道这是否有助于解决问题,但我也在这个项目中使用JADE...

编辑(2014年4月28日):

我尝试使用的 dll 是自定义的(由我工作的公司的前雇员创建)。

关于这个问题的奇怪之处在于我有 2 个执行类似任务的 java 项目。其中一个项目运行完美,而另一个项目则遇到 UnsatisfiedLinkError

关于路径:我为 dll 创建了一个特定文件夹,该文件夹包含在工作区文件夹中,但不在项目文件夹内(换句话说,与 binsrcbibssettings 等所在的文件夹相同)。是)。该文件夹的配置对于我的两个项目来说是相同的。另外,我已经测试了 System.out.println(System.getProperty("java.library.path") 方法,并且在两种情况下都返回了正确的路径。

编辑(2014年4月29日):

刚刚添加了一些有关错误消息的附加信息。我开始认为问题可能与 JADE 的使用有关......

最佳答案

这里是一个 PD 过程,可以帮助您识别问题。

将以下内容添加到您的程序中,以识别两个运行时环境之间的架构和加载路径的差异。研究路径/架构中的任何差异。

 System.out.println(System.getProperty("java.library.path"));
System.out.println(System.getProperty("sun.arch.data.model"));

您可以使用 dumpbin.exe 实用程序来识别正在加载的 DLL 所需的依赖项。确保依赖关系存在。用法示例:

C:> dumpbin /imports your.dll 

Dump of file your.dll
File Type: DLL
Section contains the following imports:
**KERNEL32.dll**

您可以使用where.exe命令查找依赖项的位置。用法示例:

C:>where KERNEL32.dll
C:\Windows\System32\kernel32.dll

如果您看到:

C:>where KERNEL32.dll
INFO: Could not find files for the given pattern(s)

调查为什么依赖的 DLL 不在路径上。

您可以使用 dumpbin.exe 命令来检查 64 位与 32 位。
示例:

C:>dumpbin /headers yourd.dll

Dump of file yourd.dll
PE signature found
File Type: DLL
FILE HEADER VALUES
14C machine (x86) <-- 32bit DLL

C:>dumpbin /headers yourd.dll

Dump of file yourd.dll
PE signature found
File Type: DLL
FILE HEADER VALUES
8664 machine (x64) <-- 64bit DLL

调查主/从属之间是否存在 32 位与 64 位不匹配的情况。如果您的 JVM 是 32 位,则需要使用 32 位 DLL。如果您的 JVM 是 64 位,则需要使用 64 位 DLL。 (可以在 64 位操作系统上运行 32 位 JVM,但 JNI DLL 必须是 32 位(DLL 与 JVM 匹配,而不与操作系统匹配)。

关于java.lang.UnsatisfiedLinkError - native 方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23347743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com