Java:util_USBUIRT.dll。找不到依赖的库

 2023-01-21    257  

问题描述

我想使用此jar文件( J/)在一个个人项目中.目前,我一直在使用Eclipse,并尝试 project> Java构建路径>添加外部Jars 以导入该罐子.

导入它后,我可以看到Eclipse中列出的该软件包中的所有类,但是,该JAR还包含两个Win32 DLL文件,需要与设备进行通信.我试图将它们添加到 system32 dir中,但没有运气.当该代码运行时,它会引发以下异常:

Java:util_USBUIRT.dll。找不到依赖的库

Exception in thread "main" java.lang.UnsatisfiedLinkError:
    C:\Windows\System32\util_USBUIRT.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at util.USBUIRT.<clinit>(USBUIRT.java:269)
    at Uirt.main(Uirt.java:6)

使用依赖walker ,我可以看到所有DLL都可以导入. p>

这是我要运行的代码段:

import util.USBUIRT;
    public class Uirt {
    public static void main(String[] args) {
        String code = "0000";   
        try {
            USBUIRT.transmitIR(code, 2, 3, 2);
        } catch (Exception e) {
            e.printStackTrace();
        }
      }
    }

如果该JAR文件是独立执行的,则可以正常工作.我当前的设置在Windows 7 64bits下运行.

推荐答案

上述jar中的dlls为32位.环境是Win7 X64.我认为JVM为32位,否则会有另一个错误,即:Can’t load IA 32-bit .dll on a AMD 64-bit platform或类似.

尝试将DLL复制到C:\Windows\SysWOW64而不是C:\Windows\System32中. 32位DLL应该进入C:\Windows\SysWOW64.它对我有用,尽管我得到了util.USBUIRT$NotInitializedException,这可能是图书馆正确加载的指示.

文章可能会在SysWOW64 vs System32上发出一些启示.

编辑:调整java.library.path

您也可以使用评论中提到的解决方案,例如,将dlls复制到C:\tmp中,并以参数运行:

-Djava.library.path="C:\tmp;${env_var:PATH}"

但是,由于两个DLL之间存在依赖性,因此C:\tmp必须在PATH上.否则仍有UnsatisfiedLinkError.手动加载uuirtdrv.dll应该有所帮助,即:

import util.USBUIRT;
public class Uirt {
    static {
        System.loadLibrary("uuirtdrv");
    }

public static void main(String[] args) {
    String code = "0000";   
    try {
        USBUIRT.transmitIR(code, 2, 3, 2);
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}

以上所述是小编给大家介绍的Java:util_USBUIRT.dll。找不到依赖的库,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26305.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。