JNR 不满意链接错误

JNR UnsatisfiedLinkError

这个问题可能与 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

  • 您需要安装 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