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

标签 java jar jna

我有一个小测试程序,可以在 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 文件合并,但忽略了其 native 支持。确保原始 jna.jar 中的所有文件(不仅仅是类文件)都复制到新目标,并且保留它们的原始路径。

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

关于java - 线程中出现异常 "main"java.lang.UnsatisfiedLinkError : jnidispatch (/com/sun/jna/win32-x86/jnidispatch. dll) 在资源路径中找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17346438/

相关文章:

java - 项目再次启动(更新)后如何保护我的数据库值?

java - 如何以编程方式从源代码创建可运行的 jar 文件?

java - 使用 jar 文件中的资源?

java - JNA 客户端到屏幕?

java - 在 Linux 上的 Spring Boot 中使用 JNA 加载 .so 文件时出现问题

java - 如何使用 JNA 处理 Fortran RTL 错误?

java - 尝试运行多类项目时 Android Studio 模拟器崩溃

Java 字符串初始化默认转换为 char 数组

java - 是否可以安排 CompletableFuture?

java - 尝试通过另一个外部 jar 引用外部 jar - httpcore 通过 httpclient