调用现有JDK lib中的现有方法时的jni java.lang.UnsatisfiedLinkError

时间:2018-06-03 17:35:03

标签: java java-native-interface

我尝试调用现有的本机方法,但得到UnsatisfiedLinkError,并且不明白为什么我从JDK复制现有代码并且没有编写我自己的C函数。

我从JDK套接字Java源代码中复制了一些代码。在Ubuntu上运行。

git fetch

}

运行此代码会导致:

public class Sokket {

static {
    System.loadLibrary ("net");
}

static {
    initProto ();
}

// rest ommited for brevity

我尝试了其他原生方法,但同样的错误,我更改了&#34; net&#34;为了测试是否可以找到该库,然后我收到一个错误,即在Exception in thread "main" java.lang.UnsatisfiedLinkError: be.good.Sokket.initProto()V at be.good.Sokket.initProto(Native Method) at be.good.Sokket.<clinit>(Sokket.java:12) 中找不到该lib,我更改了&#34; initProto&#34;测试是否可以找到该方法然后我得到相同的错误。所以它在我看来&#34; libnet.so&#34;在JDK lib目录中没有initProto(),也没有java.library.path

当我使用createSocket()运行时,我确实看到很多lib已加载但没有引用&#34; net&#34;或&#34; initProto&#34;。

如何从我自己的代码中调用现有的本机方法?

0 个答案:

没有答案