JNR UnsatisfiedLinkError

Posted

技术标签:

【中文标题】JNR UnsatisfiedLinkError【英文标题】: 【发布时间】:2017-04-01 06:14:00 【问题描述】:

这个问题可能与 this 和其他大量 UnsatisfiedLinkError 问题有关。

我正在尝试运行以下代码。

import jnr.ffi.LibraryLoader;
import jnr.ffi.types.pid_t;

/**
 * Gets the process ID of the current process, and that of its parent.
*/
public class Getpid 
    public interface LibC  
        public @pid_t long getpid();
        public @pid_t long getppid();
    

    public static void main(String[] args) 
        LibC libc = (LibC) LibraryLoader.create(LibC.class).load("c");

        System.out.println("pid=" + libc.getpid() + " parent pid=" + libc.getppid());
    

代码编译正确但拒绝运行,

(编译步骤)

javac -cp /usr/share/java/jnr-ffi.jar:. Getpid.java 

(运行步骤)

java -cp /usr/share/java/jnr-ffi.jar:. Getpid

在运行时我得到了这个error。

【问题讨论】:

找不到请求的类。在堆栈跟踪的底部查看根本原因 谢谢,有帮助! 【参考方案1】: 需要安装objective-web的asm.jar 和 jjfi.jar 将这些添加到您的类路径中,瞧!

用这个编译:

javac -cp /usr/share/java/jnr-ffi.jar:.:/usr/lib/java/jffi.jar:/usr/lib/java/jffi-native.jar:/usr/share/java/objectweb-asm/asm.jar Getpid.java

然后运行:

java -cp /usr/share/java/jnr-ffi.jar:.:/usr/lib/java/jffi.jar:/usr/lib/java/jffi-native.jar:/usr/share/java/objectweb-asm/asm.jar Getpid

【讨论】:

以上是关于JNR UnsatisfiedLinkError的主要内容,如果未能解决你的问题,请参考以下文章

JNR-FFI如何从指针读取结构数组

Packet.dll 获取 MAC 地址 (JNR-FFI)

如何像 python ctypes 那样指定 JNR 指针

jnr-ffi:有没有从头文件到java代码的生成工具

JNR UnsatisfiedLinkError

如何将本机内存复制到 DirectByteBuffer