当前位置: 首页 > 面试题库 >

在资源路径中找不到线程“ main”中的异常java.lang.UnsatisfiedLinkError:jnidispatch(/ com / sun /jna/win32-x86/jnidispatch.dll)

丁立果
2023-03-14
问题内容

我有一个小型测试程序,可以在JBuilder 6调试器中完美运行。当我制作一个.jar文件并运行它时,出现错误

>java -jar testadll.jar
Start of DLL test
Exception in thread "main" java.lang.UnsatisfiedLinkError: jnidispatch (/com/sun
/jna/win32-x86/jnidispatch.dll) not found in resource path
    at com.sun.jna.Native.loadNativeLibraryFromJar(Native.java:708)
    at com.sun.jna.Native.loadNativeLibrary(Native.java:685)
    at com.sun.jna.Native.<clinit>(Native.java:109)
    at testadll.TestThisDLL$PenniesLib.<clinit>(TestThisDLL.java:24)
    at testadll.TestThisDLL.main(TestThisDLL.java:33)

我已经搜索了驱动器,但是没有jnidispatch.dll。

该程序是

package testadll;

import com.sun.jna.Library;
import com.sun.jna.Native;
//import com.sun.jna.NativeLong;
import com.sun.jna.Platform;
import com.sun.jna.win32.StdCallLibrary;
//import com.sun.jna.*;



public class TestThisDLL {
   public interface PenniesLib extends StdCallLibrary {
    PenniesLib INSTANCE = (PenniesLib) Native.loadLibrary(
            "PenniesLib", PenniesLib.class);
        int a();
    }

  public static void main( String args[] ) {
      System.out.println("Start of DLL test");
      //TestDLL t = new TestDLL();
      //System.out.println("DLL loaded");
      int value = PenniesLib.INSTANCE.a();
      System.out.println("DLL response is " + String.valueOf(value));
  }
}

问题答案:

您显然已经将JNA的类与您自己的jar文件合并,但是省略了其本机支持。确保将原始文件中的 所有
文件jna.jar(不仅仅是类文件)都复制到新目的地,并保留其原始路径。

具体来说,您的jar文件 必须 包含com / sun / jna / win32-x86 /
jnidispatch.dll。如果要包括对其他平台的支持,则还必须包括com / sun / jna / * / jnidispatch



 类似资料:
  • 所以..有人知道如何正确地让Raspberry PI平台上的JNA支持工作吗??拜托,我感到非常沮丧,很快就放弃了解决这个问题的希望…

  • 我正在eclipse RCP项目中使用JNA。 我遵循片段风格。 xxx。dll直接位于a.b.c.d.win32中。win32。x86片段项目。 错误:线程“main”java中出现异常。lang.UnsatifiedLink错误:无法加载库“xxx”。dll”:在资源路径中找不到本机库(win32-x86/xxx.dll) 我需要一些帮助。

  • 问题 我无法访问solr管理页。 在本地系统上运行url时:http://localhost:8983/solr/admin/cores?action=create&name=new_core&configset=basic_configs 回应 > 我已重新链接:https://wiki.apache.org/solr/coreadmin solr.xml代码 tomcat7 23192 0.7

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

  • 问题内容: 我正在用Cucumber开发我的Selenium-JVM框架,并且在运行我的第一个功能时出现错误。 请帮忙。 我如何启动功能- 右键单击功能文件 选择运行方式->黄瓜功能 立即例外- 我在代码中拥有的- Launcher.java- 功能文件- 依赖项列表已添加到列表- 我的JVM-1.7 项目中只有这么多。 请帮忙。 问题答案: 确保为Maven项目添加以下依赖项: 您可以将版本替换

  • 在这段代码中,一切都很好,加上它以前是工作的,但现在我正在运行上述代码提到的异常发生。。。添加几秒钟前我安装的jdk。。所有操作均使用路径JAVA_HOME完成。。还是个例外。。帮助 C:\Program Files\Java\jdk1.6.0_45\安装java的地方... 路径=C:\Program Files\Java\jdk1.6.0\U 45\bin; 编译命令: 运行命令: