gpt4 book ai didi

java - JNI UnsatisfiedLinkError 问题

转载 作者:行者123 更新时间:2023-11-30 15:30:40 25 4
gpt4 key购买 nike

我正在创建一个 Java 程序,使用 JNI 通过 C 程序收集数据。我已经完成了这个 JNI 教程( https://thenewcircle.com/static/bookshelf/java_fundamentals_tutorial/_java_native_interface_jni.html ),并且所有内容都可以正确编译。但是,当我尝试在 Eclipse 中运行 Java 程序时,我不断收到此错误:

线程“main”java.lang.UnsatisfiedLinkError中出现异常:java.library.path中没有TurtleTrackerImpl 在 java.lang.ClassLoader.loadLibrary(来源未知) 在 java.lang.Runtime.loadLibrary0(来源未知) 在 java.lang.System.loadLibrary(来源未知) 在 main.TurtleTracker.(TurtleTracker.java:28) 在 main.Driver.main(Driver.java:54)

我使用 System.loadLibrary("TurtleTrackerImpl") 在同名的 Java 类中包含该库。

我已打印出库路径以确保其正确(C:\Users\duril_000\workspace\ArenaTracker\ArenaTracker\src),并且我已检查该路径中是否存在 libTurtleTrackerImpl.jnilib(它存在,我什至可以在 Eclipse 中打印出它的内容)。

网上还有很多其他类似的问题,但我找不到任何库路径正确且问题仍然存在的地方。请帮忙——我想不出会出什么问题?如果需要更多信息,请告诉我。

最佳答案

好吧,当系统由于其路径而无法加载您的库时,就会发生此异常。

可能的异常(exception):

  1. SecurityException -- 如果安全管理器存在及其 checkLink方法不允许加载指定的动态库

  2. UnsatisfiedLinkError -- 如果库不存在

  3. NullPointerException -- 如果 libname 为 null

所以,看来您需要在方法loadLibrary中传递完整路径,这是一个示例:

 // load a library that is Windows/System32 folder
System.out.println("Loading Library...");
Runtime.getRuntime().loadLibrary("C:/Windows/System32/crypt32.dll");
System.out.println("Library Loaded.");

根据您的情况,请尝试以下操作:

Runtime.getRuntime().loadLibrary("C:\\Users\\duril_000\\workspace\\ArenaTracker\\ArenaTracker\\src\\TurtleTrackerImpl.extension");

不要忘记更改扩展名和双杠“\\”

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

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