当前位置: 首页 > 知识库问答 >
问题:

无法加载库“xxx”。dll”:在资源路径(JNA dll eclipse rcp)中找不到本机库(win32-x86/xxx.dll)

司徒良哲
2023-03-14

我正在eclipse RCP项目中使用JNA。

我遵循片段风格。

fragment:`  
`Bundle-SymbolicName: a.b.c.d.win32.win32.x86`  
`Bundle-ClassPath: lib/jna-4.1.0.jar, . `  
`Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))`  
`Bundle-NativeCode: xxx.dll;processor=x86; osname=win32,*`  
`Fragment-Host: a.b.c.d

xxx。dll直接位于a.b.c.d.win32中。win32。x86片段项目。

host:
Bundle-SymbolicName: a.b.c.d

错误:线程“main”java中出现异常。lang.UnsatifiedLink错误:无法加载库“xxx”。dll”:在资源路径中找不到本机库(win32-x86/xxx.dll)

我需要一些帮助。

共有1个答案

隆康平
2023-03-14

我正在使用jna-4.2.1
我下载了源代码并进行了调试
我发现JNA引入了一个基于平台的前缀。

String libname=name。以(“/”)开头?名称:国家图书馆。mapSharedLibraryName(名称) String resourcePath=name。以(“/”)开头?名称:平台。资源前缀“/”libname

所以我把我的xxx包括在内。win32-x86文件夹中的dll
但是仍然是本地的。加载库(xxx.dll,…) 应按其原始名称引用dll。

谢谢你的支持。

 类似资料:
  • 我有RHEL7.3,在其中我构建了tesseract,并且我能够执行我的jar。现在我有了另一个具有相同RHEL配置的系统,我想执行相同的jar,但我不想在这个系统上构建tesseract,所以我从以前构建的tesseract系统中选择/usr/lib64/libtseract.so和/usr/lib64/liblept.so文件,并将这些so文件放在新的RHEL7.3系统中/usr/lib64/

  • 我使用JVM32bit、JNA3.5.2和VLCJ3.0.1。 从我所看到的是加载32bit库,但我的操作系统是64bit。这就是问题所在吗?

  • 当我试图在模拟器x86-64上运行我的项目时,我遇到了崩溃。我试过很多不同的解决办法,但没有人帮助我解决我的问题。 Engine ;Mobile:本机库加载失败:java.lang.unsatifiedLinkError:dalvik.system.pathClassLoader[DexpathList[[zip文件“/data/app/package-name-1/base.apk”],nati

  • 我有以下分布 主要的jar包含main方法,我想在其中访问lib提供的本机函数。所以被捆绑在发行版中。开始sh只需设置java的类路径和引导。 加载库的最佳方法是什么。那么应用程序内部的库呢?我知道两种方法: 系统。加载(绝对路径) 系统。loadLibrary(名称) 前者需要库在文件系统中的绝对路径,后者需要设置特定于应用程序的java。图书馆路径JVM参数。在这种情况下,哪种解决方案更好?将

  • 这是运行时的stacktrace。存在。 现在,我检查了我的文件夹,在文件路径中有一个 我目前使用的是TomcatV6.0、jre7并安装了JDK1.6.0_34 堆栈跟踪 在java.library.path:C:\Program Files\Java\JRE7\bin;C:\Windows\Sun\Java\bin;C:\Windows\System32;C:\Windows\ICLS客户端\

  • 问题内容: 我有一个遵循标准目录布局的项目设置(虽然未使用Maven): 本机DLL位于资源文件夹中,而源位于Java文件夹中。resources文件夹是Java类路径的成员。 我现在想加载DLL,而不必设置JRE 选项或设置变量,以便可以通过简单的双击来启动生成的jar文件。 运行jar文件时是否可以将资源文件夹添加到库搜索路径而无需进行其他配置?例如,设置与清单中的相似? 问题答案: 直到今天